vue-router切換的時候操作的都是瀏覽器的歷史記錄靖秩,iOS會把第一次剛進入時的URL作為真實URL镇防,安卓會把當前URL作為真實URL。
所以導致后端在配置好的授權參數(shù)獲得的config參數(shù)和微信sdk獲取的參數(shù)是不一樣的偷办。
微信的官方文檔建議: SPA單頁應用應該在每次切換頁面的時候?qū)嵗痵dk
但是由于遇到這個問題兼吓,我就將授權的部分放在了App.vue這個部分來完成,App.vue包含了卿捎。而且因為我并沒有使用history模式配紫, 也就是說vue的history模式下你并不能這么來。 在hash模式下午阵,頁面的路徑格式是 https://www.xxx.com/#/xxx?xx=xx&...躺孝,這樣的話,你初始化的路徑就是https://www.xxx.com/,#后面的算是頁內(nèi)跳轉(zhuǎn)不會影響jssdk的配置植袍。當然啦惧眠,你如果用的histroy模式,那么頁面路徑不帶#就會配判斷為一直在變動于个,就需要你每個頁面都去配置氛魁。
App.vue中增加
mounted(){
uni.setStorage({
key: 'WxCodeUrl',
data:location.href
});
},
再增加一個方法, 判斷是否是 IOS,如果是就將第一次的 url 存起來
getSignUrl(){
var signLink = ''
var ua = navigator.userAgent.toLowerCase();
if (/iphone|ipad|ipod/.test(ua)) {
signLink =uni.getStorageSync('WxCodeUrl');
if(!signLink)signLink = location.href
} else {
signLink = location.href
}
return signLink;
},