Vue開發微信H5 微信分享簽名失敗問題解決方案


 關於Vue中路由使用history模式,開發微信H5頁面分享時在安卓上簽名有效成功,但是在IOS設備上一直報錯簽名失效問題

問題描述:在Vue開發過程中,路由使用History模式下,在使用微信分享時,在微信開發者工具上一切正常。在安卓上一切正常。 但是!!!在IOS上反復報簽名錯誤。

以下是真機測試截圖,划掉黑線的是我個人IOS設備分享出來一直是服務號,接着下面分享出來自定義內容是安卓分享正常,話不多說上圖!!!!

 

我的代碼:

 

 

需求描述:需要從首頁進入活動詳情頁,然后在詳情頁分享詳情頁面內容。所以需要帶參數傳參,通常vue傳參通過params,query,字符串拼接這三種方式進行跳轉傳參
問題分析:因為蘋果分享會是調取簽名失敗是因為:蘋果在微信中瀏覽器機制和安卓不同,有IOS緩存問題,和IOS對單頁面的優化問題,通俗點說安卓進行頁面跳轉分享時會刷新當前的url,而蘋果不會,蘋果是通過歷史記錄進來的,不會刷新url所以會導致簽名失敗(這里解釋的可能不夠詳細,可以去百度)。

因為需求只需要分享當前頁面的時候有自定義內容,其他頁面分享出去是公眾號都無所謂,主要是活動,所以就用了如下解決辦法!!!!

因為vue的history在IOS的微信分享時不會刷新,但是我們又要做自定義分享。我在網上也看了很多,比如什么beforerouteEnter的路由判斷,或者寫在Vue.prototype.Wxshare()的原型鏈中等,看起來都太麻煩,不夠簡單粗暴,但是這些方法可以好像可以做到判斷每一個分享頁面的自定義內容。而我只需要當前分享特定的單一頁面,那么我們在A頁面跳轉B頁面(需要分享的頁面)就不用vue的history的push來跳轉傳參,我們用!我們用!我們用!window.location.href="...."來跳轉傳參,重要的事情說三遍!!!!

用:window.location.href="...."  !!! window.location.href="...."!!! window.location.href="...."!!!下面是代碼!!!

注釋掉的部分是一開始我用params來傳參的,這樣就會出現我上面提到到在IOS上SPA頁面不會刷新 url的問題,但是原生的window.location.href可以解決這個問題!!!這樣在子頁面我們在create生命周期去截取url中的字符串把需要的參數截取下來,賦值到data中去一樣可以使用.下面是子頁面接收數據截取字符串(這里的截取字符串是直接復制找的,趕時間,你可以自己寫,一次性截取3 個字符串)!!!

 

 

 

 就這樣我們的分享IOS需求就實現了,不需要在去改動我上面的微信分享配置的代碼!!但是此方法個人想的只適用於分享特定頁面,如果用戶需要分享每一個頁面不同的自定義內容,可以去網上找使用其他的路由守衛判斷,或者用Hash模式來開發(Hash模式我也不確定是否真的可以,有興趣的可以嘗試,嘗試后歡迎留言!!)

以下是真機測試成功!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM