微信公衆號調取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

相關文章
相關標籤/搜索