登录
    Technology changes quickly but people's minds change slowly.

ios H5调用微信扫码失败问题解决’invalid signature’

技术宅 破玉 2546次浏览 0个评论

由于在ios和android中,location.href在spa页面的机制不同(不同在于ios是只要不刷新页面,href就不会改变,在vue项目中就会出现类型的问题),所以我们需要借助路由钩子函数,手动改变其页面的url地址,这样ios系统的手机才能正常调起微信扫一扫。

if (to.path=='/scan'&&to.path != location.pathname) {
                location.assign(to.fullPath);
            } else {
                next()
            }

用了上面的方式,ios 第一次进入还是不行,再次点击才可以,所以在mounted 时先调用一次

 mounted(){
         let u = navigator.userAgent;
         let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
         if(isiOS){
          this.first()
         }
    },
// ios  首次进入先触发一次
     first(){
        let href = encodeURIComponent(location.href.split('#')[0])
        let that=this
        let tiurl={
            url:href
        }
      getJsapiTicket(tiurl).then(res=>{
          if (res.code == 0) {
            wx.config({
               // debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                appId:appid, // 必填,公众号的唯一标识
                timestamp: res.data.timestamp, // 必填,生成签名的时间戳
                nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
                signature: res.data.signature,// 必填,签名
                jsApiList: ['checkJsApi', 'scanQRCode'] // 必填,需要使用的JS接口列表
            });
            wx.ready(function(){
                wx.checkJsApi({
                    jsApiList: ['scanQRCode'],
                        success: function (res) {
                            
                    }
                })
                
            });
          }
        
      }
      )
    },

华裳绕指柔, 版权所有丨如未注明 , 均为原创|转载请注明ios H5调用微信扫码失败问题解决’invalid signature’
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址