问题原因:
?vueRouter History模式 ios微信浏览器下?微信只会记录第一次进入到页面的url,即时路由发生跳转(push)只要不刷新 微信当前记录的url还是第一次进入页面的时候的url 所以传入的url和真实的url不对应 导致签名错误
解决方法:
将第一次进入页面的url保存起来 每次签名的时候使用该保存的url地址
router.afterEach((to, from) => {
// window.__wxjs_is_wkwebview
// true 时 为 IOS 设备
// false时 为 安卓 设备
let host = location.origin; //host
if (window.__wxjs_is_wkwebview) { // IOS
if (window.entryUrl == '' || window.entryUrl == undefined) {
var url = `${host}${to.fullPath}`
window.entryUrl = url // 将后面的参数去除
}
getWxAuth(to.fullPath,"ios")
}else { // 安卓 设置延迟 因为安卓有时候即时签名成功,但是仍然唤不起功能
setTimeout(function () {
getWxAuth(host + to.fullPath,"android")
}, 500);
}
})
getWxAuth() {
... //请求签名信息 调用wx.config
... //唤起对应功能 调用wx.ready
}
参考: https://segmentfault.com/a/1190000014455713
|