注意:ios第一次进入页面调取失败的缘由主要在于传入的path路径ios
用路由守卫解决了问题,说白了就是每次切换页面的时候都去从新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