Android應用內瀏覽器的注意事項
當您正在開發一個網頁應用時,您需要考慮到瀏覽器的兼容性問題。我在開發過程中並未對Android應用內瀏覽器進行測試,但在正式上線以後出現了問題,導致數千次的交易失敗。我並不能從日誌中清楚地找出問題的根源,因此我花了一些時間來解決。我在這裡記錄下了這個問題,希望可以節省您未來的除錯時間。
當您的終端用戶透過第三方的Android應用內瀏覽器來訪問您的網頁應用時,您無法控制這個webView
,因為它是由第三方提供的。如果setJavaScriptEnabled
方法設置為false
,那麼您就陷入了絕境。如果你有幸使前端代碼依舊能加載,請注意setDomStorageEnabled
的設置預設為false
。如果您參考官方文檔:
Android WebSettings setDomStorageEnabled Method
這個布爾標誌設定DOM存儲API是否啟用。預設值為false,表示WebView將停用DOM存儲API。當它嘗試訪問瀏覽器中的localStorage
對象時,此設定可能會阻止您的代碼執行。
解決方案很簡單:在執行代碼之前,添加一個條件來檢查localStorage
是否可用。這個問題不會產生有意義的錯誤消息,使得除錯變得特別困難,尤其是當您需要在Android應用內瀏覽器中模擬問題時。
複製此問題的一個技巧是下載以下工具:
Android WebView Test App on Google Play
此應用程式非常實用,因為它可以讓您在Android應用內瀏覽器中查看控制台日誌。
另一個通過服務器日誌進行故障排除的技巧是檢查請求頭部的User-Agent Strings。您可以通過檢查下面的範例頭部中的wv
字段來識別WebView的請求:
Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.65 Mobile Safari/537.36
我希望這篇文章能對您有所幫助,並節省您處理這一特殊注意事項所需的時間。