Android 網頁版

如何使用不同元件,在 Android 應用程式中算繪網路內容。

Android 平台推出至今已超過十年,從早期開始就對網頁提供完善支援。這個版本隨附 WebView,可讓開發人員在自己的 Android 應用程式中使用網頁。此外,Android 允許開發人員將自己的瀏覽器引擎帶入平台,促進競爭和創新。

開發人員可以透過多種方式,在 Android 應用程式中加入網頁。WebView 常用於顯示廣告、做為與 Android UI 元素搭配使用的版面配置元件,或用於封裝 HTML 5 遊戲。開發人員可透過自訂分頁建立應用程式內瀏覽器,提供流暢的第三方網路內容瀏覽體驗。此外,開發人員還能透過受信任的網路活動,在 Android 應用程式中使用漸進式網頁應用程式 (PWA),並可從 Play 商店下載。

Android WebView

WebView 可讓開發人員在 Android 應用程式中存取新式 HTML、CSS 和 JavaScript,並允許在 APK 中傳送內容或在網際網路上託管內容。這是 Android 最靈活、最強大的元件之一,可用於大多數在 Android 應用程式中包含網路內容的用途。從支援 AdMob 等廣告服務,到建構及推出使用 WebGL 等現代 API 的完整 HTML5 遊戲,都可使用這個元件。

不過,如果使用 WebView 建立應用程式內瀏覽器,或在 Android 應用程式中加入 PWA,WebView 會缺乏網頁平台的安全性、功能和能力。

應用程式內瀏覽器難題

隨著時間推移,越來越多開發人員在 Android 應用程式中整合第三方內容,打造瀏覽器體驗,目的是讓使用者在瀏覽第三方網站時,享有更流暢的體驗。這類體驗稱為應用程式內瀏覽器

WebView 廣泛支援現代網路技術堆疊,以及 WebGL 等許多現代網路 API。但 WebView 主要是網頁 UI 工具包。不支援網路平台的所有功能。如果 API 已有 OS 層級的替代方案 (例如 Web Bluetooth),或需要實作瀏覽器 UI (例如推播通知),則可能不支援。隨著網路平台不斷發展,並加入更多原本僅限 Android 應用程式使用的功能,這項差距將會進一步擴大。由於應用程式開發人員無法控制開啟第三方內容時使用的功能,因此 WebView 不適合用於應用程式內瀏覽器或開啟漸進式網頁應用程式。即使 WebView 支援所有網頁平台功能,開發人員仍須編寫程式碼,並為權限或推播通知等功能實作專屬 UI,因此難以確保使用者體驗一致。

使用 WebView 做為應用程式內瀏覽器的安全性考量

WebView 可讓嵌入器應用程式完整存取轉譯內容,包括 Cookie 和 DOM。這些功能非常強大,需要使用者高度信任。

由於 WebView 並非用於建構瀏覽器的架構,因此不具備新式瀏覽器的安全防護功能。

多程序架構和網站隔離

瀏覽器在設計上,可安全地轉譯及執行不受信任的內容。為確保使用者在瀏覽可能不可信或甚至惡意的內容時保持安全,新式瀏覽器會採用多程序架構和網站隔離等技術。

如果沒有多程序架構,網頁造成的當機可能會導致整個瀏覽器應用程式當機,或漏洞可能會遭到利用,進而控制整個裝置。網站隔離功能可多添一層安全防護,讓不可信任的網站更難存取及竊取其他網站的資訊。

在 Android 8.0 Oreo 之前,WebView 轉譯器與嵌入器應用程式使用相同的程序。在較新版本的 OS 上,且裝置效能足夠時,轉譯器會在不同的程序中執行。不過,所有網頁和執行這些網頁的 WebView 執行個體仍會共用單一程序,因此無法完全實作網站隔離。

如果應用程式轉譯的是自有且可信任的內容,則不具備多程序架構和網站隔離功能並不會造成問題。不過,如果應用程式執行的是不受信任的第三方內容 (例如應用程式內瀏覽器),則可能會造成問題,並讓使用者暴露於 Meltdown 和 Spectre 等安全漏洞,這些漏洞可能會用於竊取 Cookie、銀行詳細資料、個人資訊等。

安全 UI 指標

此外,向使用者提供良好的安全性指標也很重要,瀏覽器在這方面投入了大量心力,且不斷演進。不過,WebView 缺少 API,無法檢查網站連線是否安全,讓應用程式開發人員建立可靠的安全指標。如果沒有這類 API,可能會導致網址列中顯示的網址與向使用者顯示的網頁不符,即使透過安全的 HTTPS 連線也是如此。

開發人員也可以選擇在應用程式中嵌入瀏覽器引擎。除了導致應用程式大小增加外,這種方法既複雜又耗時。

以自訂分頁做為應用程式內瀏覽器的解決方案

自訂分頁是在 Chrome 45 中推出,可讓開發人員在應用程式中使用使用者預設瀏覽器的分頁。自訂分頁最初由 Chrome 推出,因此稱為「Chrome 自訂分頁」。現在,這項功能已成為 Android API,且大多數熱門瀏覽器都支援自訂分頁,包括 Chrome、Firefox、Edge 和 Samsung Internet,因此更適合直接稱為「自訂分頁」。

開發人員可使用自訂分頁,將網路內容完美融入應用程式體驗。此外,開發人員還能自訂顯示網路內容的活動,例如自訂工具列顏色、動作按鈕、轉場動畫等。

此外,這類分頁也提供先前使用 WebView 或嵌入瀏覽器引擎時無法使用的功能。由於應用程式內瀏覽器是由使用者的瀏覽器提供,因此自訂分頁會與瀏覽器共用儲存空間,使用者不必在每次安裝版應用程式啟動應用程式內瀏覽工作階段時,重新登入喜愛的網站。

與 WebView 不同,自訂分頁支援所有網頁平台功能和 API,只要支援該功能的瀏覽器支援即可。

使用受信任的網路活動開啟漸進式網頁應用程式

漸進式網頁應用程式將許多原本僅限於特定平台應用程式的行為和功能,帶到網頁上。隨著類似應用程式的行為推出,開發人員希望在 Android 上重複使用這些體驗,並開始詢問如何將 PWA 整合至應用程式。

自訂分頁支援所有現代網路功能和 API,但由於其主要設計目的是開啟第三方內容,因此頂端有一個工具列,可告知使用者他們正在造訪的網址,以及表示網站是否安全的鎖頭圖示。開啟應用程式本身的體驗時,工具列會讓應用程式感覺與作業系統整合。

受信任的網路活動是在 Chrome 72 中推出,可讓開發人員在 Android 應用程式中使用 PWA。其通訊協定與自訂分頁通訊協定類似,但導入了 API,可讓開發人員驗證 (透過Digital Asset Links) 他們同時控制 Android 應用程式和開啟的網址,並在兩者皆為 true 時移除網址列。

此外,他們也推出 API,可在開啟 PWA 時建立啟動畫面,或委派 Android 程式碼處理網頁通知。我們即將推出更多功能,例如支援 Play 帳款服務。

由於在受信任的網路活動中開啟的網址應為 PWA,且有一組行為和效能特性,因此受信任的網路活動會針對在其中開啟的 PWA 導入品質條件。

現有解決方案的限制

開發人員意見回饋顯示,他們需要自訂分頁的平台相容性,以及 WebView 的彈性,以便在應用程式內瀏覽器中存取 DOM 或插入 JavaScript。

自訂分頁實際上是由使用者瀏覽器算繪的分頁,具有自訂 UI 或完全沒有 UI。這表示瀏覽器必須符合使用者對隱私權和安全性的期望,因此無法提供部分功能。

Google 的 Android 網頁團隊正在研究替代方案,並嘗試解決這些用途。敬請密切注意後續發布的詳情。

摘要

如果應用程式需要在 Android 應用程式中使用 HTML、CSS 和 JavaScript,但不需要使用現代網頁提供的進階功能,例如推播通知、Web Bluetooth 等,則適合使用 WebView。不建議用於開啟專為現代網路平台設計的內容,因為這類內容可能無法按照開發人員預期的方式顯示。不建議使用 WebView 建立應用程式內瀏覽器。另一方面,顯示第一方網路內容是 WebView 的強項。

如果開發人員想在 Android 應用程式中以全螢幕顯示自己的漸進式網頁應用程式,應使用受信任的網路活動。可做為應用程式中的唯一活動,或與其他 Android 活動搭配使用。

如要開啟專為網頁平台設計的第三方內容 (也稱為應用程式內瀏覽器),建議使用自訂分頁。