最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • [wx-open-launch-app] 微信开放标签 H5跳转App踩坑

    正文概述 掘金(大头恐龙的知更鸟)   2021-05-05   2769

    背景

    业务需求中,经常有页面会供用户分享到微信
    其他用户在微信中打开H5后,点击相应按钮,此时若用户手机中已经安装了App,则直接唤起App并自动跳转到对应页面

    这里就需要接入微信开放标签中的 <wx-open-launch-app> 标签,以向客户端传递 extinfo 来指定对应页面

    使用步骤见官方文档:开放标签说明文档,在此不赘述

    但是文档除了接入步骤外,相关注意事项的信息量十分微薄,此中坑位就由我一一道来
    (都是一些小注意点,但是遇到了可能会花费些时间才能找到原因)

    wx.config

    首先与使用 JS-SDK 一致,需要先引入 jweixin.js,后通过 wx.config 进行配置与申请

    这里的一个注意点是,即使只需要引入开放标签而不需要使用任何 JsApi,也需要至少向 jsApiList 传递一项,不能为空数组,如

    wx.config({
        ...
        jsApiList: ['onMenuShareWeibo'],
        openTagList: ['wx-open-launch-app']
    })
    

    否则会导致iOS配置的没问题,但安卓始终无法配置成功,触发 wx.error
    (最坑的是在开发者工具上是没有问题的,真机验证时才会发现,而且 error 输出的内容也不相干)

    标签引用

    官方文档中的引用示例如下

    <wx-open-launch-app xx='xx'>
        <template>
            <style>.btn { padding: 12px }</style>
            <button class="btn">App内查看</button>
        </template>
    </wx-open-launch-app>
    

    然而在 React 中不能使用 <template> 标签(React 会将小写字母开头的标签视为原生的 html 标签),因此需要改用微信提供的 <script type='text/wxtag-template'>

    并且 <style> 中的样式需要以字符串形式编写,或直接在 button 上写行内样式

    所以准确的示例应该如下

    // @ts-ignore
    <wx-open-launch-app xx='xx'>
      <script type='text/wxtag-template'>
        <style>{'.btn { padding: 12px }'}</style>
        <button class='btn' style={{ ... }}>App内查看</button>
      </script>
    {/* @ts-ignore */}
    </wx-open-launch-app>
    

    样式编写

    外部样式无法影响到标签内元素的样式
    (猜测是包裹着元素的 <script> 对外部样式进行了隔离)

    编写单位时不能使用 vwvh,因此需要 getPx 转化

    <wx-open-launch-app> 的父元素不能是 flex 布局,否则会被挤到宽度近乎为0

    标签属性

    appid

    appid 是在微信公众平台中配置的关联应用的 appId(注意不是公众号的 appId)

    当碰上 "launch:fail_check fail" 报错时,应该检查的可能性有两个

    • 上述的 appId 是否准确
    • wx.config 中的 appId 配置的公众号Id是否准确(业务有两个公众号,默认使用的是公众号A,而当时后台却配在公众号B,因此也被这个报错消磨了半天)
    extinfo

    extinfo 里放的是最重要的,即要给到客户端的需跳转到的对应路径信息

    其格式是字符串,因此如果约定的数据是对象,不要忘了先 JSON.stringify 下,给到客户端自行解析

    错误信息获取

    文档中写着 error 事件的返回值是 { errMsg: string },但实际上应该是 { detail: string },即

    btn.addEventListener('error', function (e) {
      console.log('fail', e.detail);
    });
    

    兜底处理

    唤起失败

    用户手机中可能未装有对应 App,及其他不会成功唤起 App 的情况

    因此需要在 wx.error<wx-open-launch-app> 绑定的 error 事件中都进行兜底处理,如调起原有的跳转到 AppStore / 应用宝等的流程
    (wx.error 是针对微信版本、系统版本过低导致的配置失败的处理,开放标签的 error 则是针对应用尚未安装的处理)

    初始化未完成

    在微信开放标签初始化完成之前(一般在1s内),按钮是不会显示的(只显示为一个小白圆圈?) [wx-open-launch-app] 微信开放标签 H5跳转App踩坑

    因此可以写多一个 loading 状态的按钮展示,在开放标签的 ready 事件触发之后再进行替换


    起源地下载网 » [wx-open-launch-app] 微信开放标签 H5跳转App踩坑

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元