乘风破浪 激流勇进
你好!欢迎来看Tuziki's Planet !
微信中h5页面跳转微信小程序注意事项
作者:tutuhuang 日期:2022-05-21
具体操作可以看官方文档
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html
下面主要总结一些过程中可能遇到的问题:
- 域名是https并且备案
- 公众号JS安全域名里面有登记你的前端域名,https://mp.weixin.qq.com/
- ip白名单列表里面有登记服务器出口外网IP地址
- 公众号必须是服务号,订阅号不可以用,非个人主体的
- 遇到VUE报错
<wx-open-launch-weapp>
未定义,需要新增这个标签,在main.js中添加 Vue.config.ignoredElements.push('wx-open-launch-weapp') ,如果使用了 Vue.config.ignoredElements=['wx-open-launch-weapp'] 会覆盖所有自定义标签,不可用 - 微信开发者工具和真机都可以显示出按钮的,chrome浏览器不行
- 后台接口已经完成签名校验,并返回正确的值,注意前后端使用的appid必须是同一个
- JSSDK要使用高版本的,https://res2.wx.qq.com/open/js/jweixin-1.6.0.js
- 确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致
- 最好开启wx.config的debug模式,方便调试
- jsApiList:['chooseImage', 'previewImage'](必须有,不然安卓不显示)
- 微信版本要求为:7.0.12及以上。 系统版本要求为:iOS 10.3及以上、Android 5.0及以上
- wx.config中的配置项必填的一定是必填的
- 不能用js来模拟点击,有局限性
- 样式无法写在外面中,只能在script标签内内链写或者行内样式
- 无论是内链还是行内 都不支持rem
- 不会继承样式
- 如果开发标签内需要使用图片,不能用本地图片,得用外网可以访问的图片,要不然会不显示
- path是需要跳转的微信小程序的路径,需要在路径后边添加.html。否则跳转不过去
- html 页面可以用
<template></template>
标签包裹,Vue 页面要改用<script type="text/wxtag-template"></script>
包裹 - 后端的加密方法是 hex_sha1
- username是需要跳转小程序的原始id,以gh_开头
<template>
<div class="home-wrap">
<div class="top">
目标ID: {{ this.id }} <br /><br />
目标路径: {{ this.url }}
</div>
<div class="xxbtn">
<wx-open-launch-weapp id="launch-btn" :username="id" :path="`${url}.html`">
<script type="text/wxtag-template">
<style>.openbtn { display: block;width: 280px;height: 42px;line-height: normal;
border: none;background-color: #11961c;color: #fff;font-size: 18px;border-radius: 6px;}</style>
<button class="openbtn">打开小程序</button>
</script>
</wx-open-launch-weapp>
</div>
</div>
</template>
html 页面可以用 <template></template> 标签包裹,Vue 页面要改用 <script type="text/wxtag-template"></script> 包裹
<script>
import {
isInWechat, isInApp, getUrlParamValue, getToken
} from '@/common/util/env-helper'
import { getSignData } from '../service/api'
export default {
name: 'Home',
data() {
return {
isInWechat: isInWechat(),
isInApp: isInApp(),
code: getUrlParamValue('code'),
token: getToken(),
id: '',
url: ''
}
},
created() {
const { id, url } = this.$route.query
this.id = id
this.url = url
},
async mounted() {
if (this.id && this.url) {
await this.pageConfig()
}
},
methods: {
async pageConfig() {
console.log('this.isInApp :>> ', this.isInApp)
if (this.isInApp) {
// const data = await checkUser()
// if (data) {
// this.$router.push('/record')
// }
}
// if (this.isInWechat) {}
const params = {
version: '2.0.0',
type: 'H5',
// url: 'https://cxxxxxx.com/szswj/stg2/app/feature/reserve/#/'
url: window.location.href.split('#')[0]
}
const res = await getSignData(params)
console.log('res', res.data)
const info = res.data
const configs = {
debug: true,
appId: 'wx123456789',
...info,
jsApiList: [
'showOptionMenu',
'updateAppMessageShareData',
'updateTimelineShareData',
'chooseImage',
'previewImage'
],
openTagList: ['wx-open-launch-weapp'] // 必填,需要使用的JS接口列表
}
console.log('configs---', configs)
window.wx.config(configs)
window.wx.ready(() => {
console.log('ready')
// window.wx.updateAppMessageShareData(shareData) // “分享给朋友”及“分享到QQ”
// window.wx.updateTimelineShareData(shareData) // “分享到朋友圈”及“分享到QQ空间”
})
window.wx.error(resp => {
console.error(`[WechatAgent--] 初始化微信sdk时发生异常: ${JSON.stringify(resp)}`)
})
}
}
}
</script>
<style lang="scss" scoped>
.xxbtn{
margin: 200px auto 0;
width:280px;
}
</style>
类似案例:
https://developers.weixin.qq.com/community/develop/article/doc/0006ac9d35cc38455deb68ee350813
https://www.cnblogs.com/Can-daydayup/p/15404964.html#_label1
https://blog.csdn.net/Angelheca/article/details/125444337
https://blog.csdn.net/qq_32684617/article/details/124901270
https://blog.csdn.net/weixin_44265066/article/details/125673122 云函数跳转
上一篇: Vue与React生成前端二维码的QRcode组件使用
下一篇: Shell常用指令集
返回列表
返回顶部←