WebView 內崁式瀏覽器

前兩週有遇到 webview 的問題 還沒來得及紀錄一下
(其實一直以來都有遇到各式各樣的坑… 隕石坑…)

內文就先來簡單介紹一下 webview 是什麼

內文

  • webview 介紹
  • webview 版本
  • webview 如何除錯

webview 介紹


webview 主要應用在手機上作為內崁瀏覽器
以便在使用任何 APP 點開外連網址時可以不用跳出去
優點是使用 APP 的驗感佳 缺點是外連網站的體驗感不佳 XD
因為 webview 使用的瀏覽器往往不是主流瀏覽器 所以語法支持上較差…

底下先筆記重點:

  • webview 不是手機上默認的瀏覽器
  • webview 不是手機上自帶的瀏覽器

webview 是手機上的系統瀏覽器

webview 版本


在對 webview 有了基本的認識以後 接下來要談到如何分別版本
分辨版本對於 webview 除錯有相當大的幫助

先講重點:

Android 和 iOS 是不一樣的路線

Android

Android 在 Android 5 以後 webview 從核心系統裡獨立出來
一般手機可能可以在: 設定 -> 應用程式 -> 全部 -> 裡面找到 Android System WebView
(實際上要看你手機是哪一個牌子… 才能知道他在哪裏 XD)

Android System WebView 就是 Android 的系統瀏覽器啦
主要是跟隨 Chrome 的核心技術 用的是基於 Chromium 的瀏覽器 (google 下開源的項目)
點開此應用就可以看到版本了 但是版本前顯示的不一定是 Chromium/googel/chrome 相關字樣
而是顯示 package name , 此 package name 和廠商訂定有關
如需升級版本也需要找到對應 package name 的更高版本才行

iOS

單純很多

  • iOS2 ~ iOS7 : UIWebView
  • iOS8+ : WKWebView

如果本地開 Server 讓手機打開 webview 連線
其實從終端機其實就可以看到設備的瀏覽器版本資訊了
顯示的內容就和平常瀏覽器讀取navigator.userAgent 是一樣的

底下 iPhone 上示範

1
"Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1"

底下 Chrome 上示範

1
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"

在這邊 Andorid 和 iOS 都是一樣的
不難看出使用者的設備與使用的瀏覽器版本

webview 如何除錯


這個答案要看 webview 連到哪邊

如果是連到三方有問題 就是三方的問題 請相關人士去處理 XD

如果連到的網站屬於需要自行維護範圍內的網站 就得自行處理 Orz..

可以先在 APP 端將 webview 連到 localhost 打包成 apk / ipa 另訂版本號
或直接使用 adb 連手機安裝應用

接下來連本地 Server 查看對應的 webview 版本
確認版本後 就可以上網找到對應的版本下載
然後開始在本地 console 除錯

通常就是 ES 版本問題, polyfill 加上的墊片不夠或沒有加到關鍵的墊片 XD

最後用手機 webview 連 localhost 做最後的結果確認
沒問題就可以把 webview 線上的網址給改回去了 (撒花)

本文作者: David Huang
本文地址https://davidblog.github.io/2020/06/25/webview/

0%