如何在微信内外部浏览器唤起小程序

您所在的位置:网站首页 vue内部打开外部网页 如何在微信内外部浏览器唤起小程序

如何在微信内外部浏览器唤起小程序

2023-11-27 10:03| 来源: 网络整理| 查看: 265

微信外部浏览器唤起微信小程序目的:通过发送短信召回流失用户。官方文档地址https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-scheme/urlscheme.generate.html步骤一该API我们主要用到的配置如下:jump_wxa:跳转到的目标小程序信息。该对象内包含两个字段。path:通过scheme码进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带queryquery:通过scheme码进入小程序时的query。步骤二需要注意的是,query必传,然而如果我们需要跳转的页面不需要参数,也需要配置上query,默认我们填写的是from=sms, 用于统计是从浏览器渠道来的。步骤三与后端约定access_token 通过前端传递appKey进行区分,传哪个微信小程序的appKey 就生成对应小程序的access_token。步骤四支持设置scheme的过期时间,默认永久,我们的应用场景很少,暂不详说。步骤五代码里操作如下,由后端聚合参数信息。let postData = { appKey: 'QTSHE_MINI_APP', path: 'pages/partdetails/partdetails', query: 'partJobId=123456' || 'a=1' } this.$axios.post('/qtsWeChat/wechat/qrCode/scheme/info', postData).then((res) => { if (res.success) { const url = res.data.openlink // 将scheme转为我们平台的短链接,否则在安卓手机上无法打开微信小程序,会默认打开浏览器搜索。 this.$axios.get(`/misc/shortLink/conversion`, {url}).then((res) => { if (res.success) { this.shortLink = res.data } }) } else { this.$Message.error('获取失败,请稍后重试') } }).catch((err) => { console.log(err) }) 注意点该链接只支持在外部浏览器打开,微信内部浏览器访问是无法打开的,微信内部浏览器打开需要使用微信的开放标签,下面详说。微信内部浏览器唤起小程序官方文档地址https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html步骤一首先需要登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”,该域名我们配置的是https://m.qtshe.com, 所以导致我们调试的时候需要每次都发布到线上看效果(大坑)。步骤二在需要调用JS接口的页面引入如下JS文件:https://res.wx.qq.com/open/js/jweixin-1.6.0.js,1.6.0版本内才增加了上述标签,低于该版本的都无法显示。步骤三通过config接口注入权限验证配置并申请所需开放标签, 在wx.config里增加openTagList标签,内置两个开放标签 wx-open-launch-app 微信h5唤起本地已经安装的app,以及 wx-open-launch-weapp 微信h5唤起小程序,操作如下:window.wx.config({ debug: false, appId: window.g_info.wx_appid, timestamp: data.data.timestamp, nonceStr: data.data.nonceStr, signature: data.data.signature, jsApiList: [], openTagList: [ 'wx-open-launch-app', 'wx-open-launch-weapp' ] }) 注意点对于Vue等视图框架,为了避免template标签冲突的问题,可使用进行代替,来包裹插槽模版和样式。页面中与布局和定位相关的样式,如position: fixed; top -100;等,尽量不要写在插槽模版的节点中,请声明在标签或其父节点上;对于有CSP要求的页面,需要添加白名单frame-src https://*.qq.com webcompt:,才能在页面中正常使用开放标签。Vue里操作代码如下,如果需要写样式,最好是外部包一个div进行样式编写,内部的内容宽高100%即可,调试样式可使用微信开发者工具的网页模式: img { width: 100%; display: block; }

示例效果

扩展// 各个端口跳转兼职详情页 jumpToPartJobDetail(partJobId) { util.isAliMiniApp().then((res) => { if (res) { // 如果是在支付宝小程序环境则打开小程序详情页 my.navigateTo({ url: `/pages/partdetails/partdetails?partJobId=${partJobId}` }) } else { // 如果是在客户端app环境,则打开原生岗位详情页 if (util.isAndroidApp() || util.isIosApp()) { jsBridge.evokeNormalPartJobDetailPage(partJobId) } else if (util.isMiniApp()) { // 微信小程序里则打开微信小程序岗位详情 wx.miniProgram.navigateTo({ url: `/pages/partdetails/partdetails?partJobId=${partJobId}` }) } else if (util.isMobile()) { // 如果是在手机自带浏览器或者除微信外的app浏览器,统一打开支付宝小程序 let url = `alipays://platformapi/startapp?appId=2018082861168647&page=pages/partdetails/partdetails&query=partJobId%3D${partJobId}` window.location.href = `https://ds.alipay.com/?scheme=${encodeURIComponent(url)}` } else { // pc端打开h5的兼职详情页 window.location.href = `/app/partdetails?partJobId=${partJobId}` } } }) }

具体示例https://m.qtshe.com/test.html

为了方便运营同学,做了个工具给他们使用。

4.11号新版本后的改版方案:

首先做一个落地页:https://b.qtshe.com/1DF43E

代码如下:

import toast from 'toast' export default { created() { this.init() }, methods: { // 获取微信scheme地址,并且主动跳转一次 init() { this.$axios.post(`https://xxx/你们的接口地址/user/device/scheme`, this.$route.query).then(res => { if (res.success) { window.location.href = res.data } else { toast(res.msg) } }).catch(() => { toast('服务器错误,请稍后重试') }) } } }

原理:通过地址栏配置需要跳转的参数,h5页面拿到参数后通过接口转换为weixin://xxxx 开头的scheme协议地址,并且主动location.href一次。这样能保证用户每次打开都是新的scheme地址,针对一天50w数量上限的问题,可尝试同一个用户在固定时间内相同的参数,返回相同的scheme地址。

以上限制只存在于除微信外的外部浏览器,微信容器里没有以上的限制。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3