What is WebView?
本篇文章預計介紹什麼是 WebView,以及 Frontend 使用 WebView 時可能會遇到的問題。
A WebView is an embeddable browser that a native application can use to display web content.
Concepts
embeddable browser
: WebView is developed based on engines used by common browsers such as Safari, Chrome, Firefox, Edge. It can just be viewed as a browser.native application
: apps/games in our casedisplay web content
- commonly load web content from a
http://
orhttps://
location - JavaScript running inside the WebView also has the ability to call native system APIs.
- commonly load web content from a
常見的 WebView 應用
- Facebook/Twitter/Line 的內建瀏覽器
- App 內嵌入廣告(類似 Web 嵌入 iframe)
Why use WebView?
- 有助於 app 留存和 UX(不必跳出 app)
- 更新彈性較高:修改頁面 layout 或邏輯,只需修改網頁後重新部署。不須以推新版本,並要求使用者更新 app 的方式進行
Possible problems
- 瀏覽器支援程度
- 無法使用
alert()
,confirm()
等,要以WebChromeClient
override methods (ref)
- 無法使用
- 開發環境
- 比照一般網頁的開發方式
- 如果想看實際在 app 中開啟狀況,還是得將 app 以模擬器跑起來
- UX 問題
- WebView 的關閉按鈕可能會跟網頁設計的排版衝突
- scroll、touch move 等事件,不一定和瀏覽器的效果相同,ex: scroll bouncing
- 能否判斷網頁是否是以 WebView 開啟?
- 判斷 user agent (ref)
- 保險一點 app 開 WebView 時設定 user agent
- 身份驗證流程,ex: token 存取,也涉及 UX
- 連接和 App 相同的伺服器?
- 視為 App 的延伸並從 App 獲取部分資料?
References
- https://www.kirupa.com/apps/webview.htm
- https://docs.uniwebview.com/
- 查 WebView 大多都是 app 相關的開發文章,事實上使用 WebView 的話,frontend 也不太需要做什麼處理