問題描述
使用Vue開發的H5頁面調用微信掃一掃,Android系統中能調起成功,iOS系統第一次進入頁面調起失敗,需手動刷新一次才能調起成功。
出現原因
Android系統中能調起成功說明整個調用邏輯沒有問題,iOS系統中調起失敗說明wx.config
里的驗證信息出現了錯誤。
經排查,發現從某頁跳轉至掃碼頁是使用路由方式this.$router.push()
實現的頁面跳轉,在iOS版微信中,此跳轉方式不會導致實際路徑發生改變,也就是說雖然跳轉到了掃碼頁面,但是在掃碼頁通過location.href
獲取到的url還是上一級頁面的,導致掃碼頁在進行微信驗證時簽名無效。
解決辦法
進入掃碼頁時不要使用路由跳轉,使用window.location.href
進行跳轉,這樣會刷新一下路徑,再用location.href
獲取的就是當前掃碼頁的url。