微信公众号调取jssdk扫一扫功能,ios第一次进入页面调取失败(需刷新页面才能调取成功,Android正常)的解决方法

注意:ios第一次进入页面调取失败的缘由主要在于传入的path路径ios

看了一些博客,说是url要用encodeURIComponent进行编码,后台解码就能够解决问题,可是对我用了仍是不能解决,因而我又找了其它方法

用路由守卫解决了问题,说白了就是每次切换页面的时候都去从新configapi

可是由于安卓手机上没有问题,我就区分了安卓和ios的写法:bash

let u = navigator.userAgent, app = navigator.appVersion;
let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isIOS) {
  // 全局路由守卫
  router.beforeEach((to, from, next) => {
    const data = {
      url: encodeURIComponent((location.href.split('#')[0])),
      appType: sessionStorage.getItem('appType')
    }
    const url = '/wx/getJsSdkPermission?' + qs.stringify(data);  //获取签名
    http.get({ url, data }, {
      success: (data) => {
        wx.config({
          beta: true, // 必须这么写,不然wx.invoke调用形式的jsapi会有问题
          debug: false, // 开启调试模式,调用的全部api的返回值会在客户端alert出来,若要查看传入的参数,能够在pc端打开,参数信息会经过log打出,仅在pc端时才会打印。
          appId: this,appId, // 必填,企业号的惟一标识,此处填写企业号corpid
          timestamp: data.timestamp, // 必填,生成签名的时间戳
          nonceStr: data.noncestr, // 必填,生成签名的随机串
          signature: data.sign, // 必填,签名,见附录1
          jsApiList: [
            "checkJsApi",
            "scanQRCode",
          ]// 必填,须要使用的JS接口列表,全部JS接口列表见附录2
        });
        wx.ready(function (data) {
        })
      }
    });
    next() // 必须使用 next ,执行效果依赖 next 方法的调用参数
  })

}
复制代码

问题完美解决session

相关文章
相关标签/搜索