Android 版 WebAPK

當使用者將漸進式網頁應用程式新增至 Android 裝置的主畫面時,Chrome 會自動為您產生 APK,我們有時稱之為 WebAPK。透過 APK 安裝應用程式後,應用程式就會顯示在應用程式啟動器和 Android 應用程式設定中,並註冊一組意圖篩選器。

在 Android 上安裝 PWA 不僅會將漸進式網頁應用程式新增至使用者的主畫面,Chrome 會自動產生並安裝應用程式的特殊 APK,我們有時稱之為 WebAPK。透過 APK 安裝應用程式後,應用程式就會顯示在應用程式啟動器和 Android 應用程式設定中,並註冊一組意圖篩選器。

為了產生 WebAPK,Chrome 會查看網頁應用程式資訊清單和其他中繼資料。偵測到資訊清單更新時,Chrome 就需要產生新的 APK。

Android 意圖篩選器

在 Android 上安裝漸進式網頁應用程式時,該應用程式會為應用程式範圍內的所有網址註冊一組意圖篩選器。當使用者點選應用程式範圍內的連結時,系統會開啟應用程式,而不是在瀏覽器分頁中開啟。

請考慮下列部分 manifest.json

"start_url": "/",
"display": "standalone",

當使用此功能的網頁應用程式從應用程式啟動器啟動時,會以獨立應用程式的形式開啟 https://example.com/,而不會顯示任何瀏覽器介面。

WebAPK 會包含下列意圖篩選器:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/" />
</intent-filter>

如果使用者在已安裝的應用程式中點選連結至 https://example.com/read,系統會擷取意圖,並在漸進式網頁應用程式中開啟連結。

使用 scope 限制意圖篩選器

如果您不希望漸進式網頁應用程式處理網站中的所有網址,可以將 scope 屬性新增至網頁應用程式資訊清單。scope 屬性會告知 Android 系統,只有在網址與 origin + scope 相符時,才會開啟網頁應用程式。您可以透過這個屬性控制應用程式要處理哪些網址,以及哪些網址應在瀏覽器中開啟。如果您在同一個網域中擁有應用程式和其他非應用程式內容,這項功能就非常實用。

請考慮下列部分 manifest.json

"scope": "/app/",
"start_url": "/app/",
"display": "standalone",

從應用程式啟動器啟動時,系統會以獨立應用程式形式開啟 https://example.com/app/,而不會顯示任何瀏覽器介面。

和先前一樣,產生的 WebAPK 會包含意圖篩選器,但 APK 的 AndroidManifest.xml 會包含不同的 android:pathPrefix 屬性:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/app/" />
</intent-filter>

以下列舉幾個示例:

正確做法

https://example.com/app/ - 位於 /app/

正確做法

https://example.com/app/read/book - 位於 /app/

錯誤做法

https://example.com/help/ - 不在 /app/

錯誤做法

https://example.com/about/ - 不在 /app/

如要進一步瞭解 scope、未設定 scope時會發生什麼事,以及如何使用 scope 定義應用程式的範圍,請參閱 scope

管理權限

權限的運作方式與其他網頁應用程式相同,且無法在安裝時要求。相反地,您必須在執行期間要求這些權限,最好只在確實需要時才要求。舉例來說,請不要在首次載入時要求相機權限,而是等到使用者嘗試拍照時再要求。

管理儲存空間和應用程式狀態

即使是透過 APK 安裝漸進式網頁應用程式,Chrome 也會使用目前的設定檔儲存所有資料,且不會將資料分開。這可讓瀏覽器和已安裝的應用程式之間共用體驗。Cookie 會共用且處於活動狀態,任何用戶端端儲存空間都可存取,且服務 worker 已安裝並準備就緒。

更新 WebAPK

關於 WebAPK 更新方式的資訊已移至「Chrome 如何處理網頁應用程式資訊清單的更新」。

常見問題

產生啟動畫面時會使用哪些圖示?:
建議您提供至少兩個圖示:192 像素和 512 像素的啟動畫面。您曾向我們反映,啟動畫面上的圖示過小。在 Chrome 71 以上版本中產生的 WebAPK 會在啟動畫面上顯示較大的圖示。只要提供建議的圖示,就不需要採取任何行動。
如果使用者已安裝網站的原生應用程式,會發生什麼情況?
就像現今的「新增至主畫面」功能一樣,使用者可以新增任何原生應用程式以外的網站。如果您預期使用者可能會同時安裝這兩種應用程式,建議您將網站的圖示或名稱與原生應用程式區分開來。
如果使用者清除 Chrome 快取,是否會清除已安裝網站的儲存空間?
是。
我換新裝置時,應用程式是否會重新安裝?
目前還沒有,但我們認為這是重要的領域,因此正在研究如何實現這項功能。
權限如何處理?我會看到 Chrome 提示還是 Android 提示?
權限仍會透過 Chrome 管理。使用者會看到 Chrome 提示,要求他們授予權限,並可在 Chrome 設定中編輯權限。
這項功能適用於哪些 Android 版本?
漸進式網頁應用程式可安裝於所有執行 Android 版 Chrome 的 Android 版本,特別是 Jelly Bean 以上版本。
這個應用程式是否使用 WebView?
否,網站會在使用者新增網站的 Chrome 版本中開啟。
我們可以將建立的 APK 上傳至 Play 商店嗎?
否。如要上傳自己的 APK,請參閱「可信任的網路活動」。
這些項目是否已在 Play 商店中列出?
否。如果您想上傳自己的 APK 以便在 Play 商店上架,請參閱「可信任的網頁活動」相關說明。
我是 Android 上其他瀏覽器的開發人員,可以使用這個無縫安裝程序嗎?:
我們正在處理這個問題。我們致力於讓所有 Android 瀏覽器都能使用這項功能,並且會盡快提供更多詳細資訊。