微信开放标签wx-open-launch-app唤起app

微信开放标签官网地址目录 | 微信开放文档

本文通过以下几个步骤来说明

        1.微信开放平台和微信公众平台配置

        2.准备h5页面添加跳转代码(微信分享展示的链接)

        3.app内添加微信分享代码

        4.解决开放标签不显示问题

        5.联调

第一步:

        1.配置微信开放平台

                申请微信开放平台账号并进行微信认证,登录微信开放平台微信开放平台点击管理中心

        移动应用标签进行创建应用(没什么特别注意的点,按照提示创建就完事)

        点击公众号标签绑定公众号(这里注意公众号一定是服务号,订阅号不能进行使用,并且公众号的主体要和开放平台的主体要一致,不一致的绑定不成功)

   

        登录微信公众平台,设置JS接口安全域名,(这个安全域名,就是你的h5域名,唤醒app的网页域名)

      

        至此,两个平台配置完成。

第二步:开发h5页面,就是要唤醒h5的网页

        根据官方文档进行开发,引入JS文件在需要调用JS接口的页面引入如下JS文件:(注意一定要是1.6.0这个版本,其余版本目前不成功)http://res.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)备注:支持使用 AMD/CMD 标准模块加载方法加载。(本人用的是https方式引入的,在index.html页面中引入,在组件中使用window.jWeixin,如下:)

          这里需要后端提供接口,进行安全签名,签名详情:概述 | 微信开放文档

h5前端代码如下:(如果后台签名不成功,前端页面的微信开放标签按钮不会显示出来

<template>
    <div style="text-align: center;">
       <wx-open-launch-app id="launch-btn" extinfo="这个参数是传递给app的数据,记住一定得是字符串自己处理一下" appid="开放平台appid" @error="onListenLaunchError">
          <script type="text/wxtag-template">
             <style>.btn { background-color: #34703F;color: #ffffff;height: 40px;width: 160px;border-radius: 18px;border:0; }</style>
             <button class="btn">立即参团</button>
          </script>
       </wx-open-launch-app>
   </div>
</template>
<script>
    mounted() {
        axios.get('后端定义接口').then(res => {
            window.jWeixin.config({
                // debug: true, // 这个设置成true签名成功会返回弹出config ok的框框,建议测试的时候还是把这个打开,确保这一步是成功的。
                appId: res.data.data.appId, // 必填,公众号的唯一标识后台配置的
                timestamp: res.data.data.timestamp, // 必填,生成签名的时间戳后台配置的
                nonceStr: res.data.data.nonceStr, // 必填,生成签名的随机串后台配置的
                signature: res.data.data.signature,// 必填,签名后台配置的
                jsApiList: ['wx-open-subscribe', 'wx-open-launch-app'],// 必填,需要使用的JS接口列表,这个地方必须至少写一个,即使你一个都不想用'updateTimelineShareData',
                openTagList: ['wx-open-subscribe', 'wx-open-launch-app']// 可选,需要使用的开放标签列表
            })
            window.jWeixin.ready(function (e) {
                console.log('要执行的返回', e)
                // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中
            });
            window.jWeixin.error(function (res) {
                console.log('错误的返回', res)
                alert(res)
                // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名
            });
        })

    },
</script>

第三步:编辑app端分享的代码(这里用的是uniapp,分享 | uni-app官网

uni.share({
						provider: "weixin",
						scene: "WXSceneSession",//微信好友,其他参数可以参照uniapp官方分享
						type: 0,//0是图文的意思
						href:_this.appHref,//h5网页的地址
						title: _this.shareData.title,//分享标题
						summary: _this.shareData.subTitle,//副标题
						imageUrl: `${_this.shareData.imageUrl}`,//图片
						success: function(res) {
							console.log("success:" + JSON.stringify(res));
						},
						fail: function(err) {
							console.log("fail:" + JSON.stringify(err));
						}
					});

第四步:解决开放标签不显示的问题

        1.后端签名不成功的话标签不会显示,可以打开debug:true,进行确认签名验签情况

        2.在微信浏览器中,一定得是卡片式链接,长链接和短链接不行,虽然有的可以展示出开放标签但是唤起app会报错,失败。

第五步:联调,

        通过uniapp云打包安装到手机上,点击分享按钮,分享到微信,就可以成功了,如果还是有问题就直接代码中alert出来问题的详情。

### uni-app 接收微信小程序 wx-open-launch-app 参数 在uni-app开发的应用中,为了能够接收来自微信小程序通过`wx-open-launch-app`传递过来的参数,需遵循特定配置流程。当从小程序跳转至APP时,会携带一些数据作为启动参数,这些参数可以在APP端获取并解析。 #### 配置manifest.json文件支持deeplink 确保项目根目录下的`manifest.json`已设置允许URL Scheme方式唤醒应用,并定义好对应的scheme名称以及host路径模式[^1]: ```json { "app-plus": { "distribute": {}, "urlScheme": [ { "scheme": "yourappscheme", "hosts": [ { "host": "pathpattern" } ] } ], ... } ``` #### 修改pages.json监听路由变化事件 对于需要处理外部链接唤起场景的页面,在其生命周期函数内注册监听页面加载完成后的回调方法来捕获传入的数据。通常是在`onLoad()`钩子里面实现逻辑判断是否存在query字符串形式附加的信息[^2]: ```javascript export default { onLoad(options){ console.log('options:', options); // 对于从微信小程序跳转而来的请求, 可能包含有scene字段以及其他自定义key-value对 if (options && Object.keys(options).length > 0) { let scene = decodeURIComponent(options.scene || ''); // 进一步解析scene或者其他可能存在的参数... } }, ... }; ``` 需要注意的是,实际应用场景下可能会涉及到安全校验等问题,比如验证来源合法性、防止恶意调用等操作,因此建议开发者根据业务需求做适当调整优化。 #### 处理不同平台差异兼容性问题 由于uni-app编译目标涵盖了多个终端环境(iOS/Android/H5),所以在编写代码过程中要注意区分各平台特有的行为特性,必要时采用条件编译语法提供针对性解决方案。 ```html <!-- 使用条件编译 --> <template> <!-- #ifdef APP-PLUS --> <view v-if="isFromWeChatMiniProgram"> 来源于微信小程序的内容展示区域 </view> <!-- #endif --> <!-- 其他通用UI组件 --> </template> <script> import { getCurrentInstance } from '@vue/runtime-core'; export default { setup(){ const internalInstance = getCurrentInstance(); const isFromWeChatMiniProgram = /MicroMessenger/.test(navigator.userAgent); return { isFromWeChatMiniProgram, }; } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端_小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值