Android 版 WebAPK

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

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

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

Android 意圖篩選器

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

請考量下列部分 manifest.json

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

透過應用程式啟動器啟動使用該應用程式的網頁應用程式時,該應用程式會以獨立應用程式的形式開啟 https://example.com/,且沒有任何瀏覽器 Chrome。

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 限制意圖篩選器

如果不希望 Progressive Web 應用程式處理您網站上的所有網址,可以在網頁應用程式資訊清單中新增 scope 屬性。scope 屬性會指示 Android 只有在網址符合 origin + scope 的情況下,才會開啟您的網頁應用程式。可讓您控管應用程式處理哪些網址,以及該在瀏覽器中開啟的網址。當您的應用程式和其他非應用程式內容位於相同網域時,這項功能就能派上用場。

請考量下列部分 manifest.json

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

從應用程式啟動器啟動時,https://example.com/app/ 會以獨立應用程式的形式開啟,且沒有任何瀏覽器 Chrome。

和先前一樣,產生的 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

管理權限

權限的運作方式與其他網頁應用程式相同,安裝時不得要求。而是必須在執行階段提出要求,理想情況下只在有需要時。舉例來說,首次載入時不要要求相機權限,而是等到使用者嘗試拍照後再要求相機權限。

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

即使漸進式網頁應用程式是透過 APK 安裝,Chrome 仍會使用目前的設定檔儲存任何資料,且不會分開處理。這樣就能讓瀏覽器和已安裝的應用程式共享體驗。Cookie 會共用且已啟用,使用者可以存取任何用戶端儲存空間,服務工作站也已安裝完畢,隨時能立即使用。

更新 WebAPK

如要瞭解 WebAPK 的更新方式,請參閱 Chrome 如何處理網頁應用程式資訊清單的更新

常見問題

哪些圖示可用來產生啟動畫面?:
建議您至少提供兩個圖示:192px 和 512px 用於啟動畫面。您曾表示 啟動畫面上的圖示太小在 Chrome 71 以上版本中產生的 WebAPK 會在啟動畫面中顯示較大的圖示。只要系統提供建議的圖示,您無須採取任何行動。
如果使用者已經安裝該網站的原生應用程式,會發生什麼事?
就像現在新增至主畫面,使用者也能新增與任何原生應用程式無關的網站。如果預期使用者可能會同時安裝這兩個應用程式,建議您將網站圖示或名稱與原生應用程式區分開來。
如果使用者清除 Chrome 的快取,系統會清除已安裝的網站儲存空間嗎?
可以。
取得新裝置後,系統會重新安裝應用程式嗎?
目前還不行,但我們認為這是非常重要的領域,我們正在設法讓這項技術能夠正常運作。
系統如何處理權限?我會看到 Chrome 提示或 Android 嗎?
權限仍會透過 Chrome 管理。使用者會看見 Chrome 提示來授予權限,並可在 Chrome 設定中編輯這些內容。
這項功能可以在哪些 Android 版本上運作?
在所有執行 Android 版 Chrome 的 Android 版本 (特別是 Jelly Bean) 上,都能安裝漸進式網頁應用程式。
這項工具使用 WebView 嗎?
否,網站會透過使用者新增網站的 Chrome 版本開啟。
可以將建立的 APK 上傳到 Play 商店嗎?
不可以。如要上傳自己的 APK,請參閱「Trusted Web Activities」。
Play 商店是否列出這些項目?
不會。如要上傳自己的 APK 以便顯示在 Play 商店的商店資訊,請參閱「Trusted Web Activities」。
我是 Android 中其他瀏覽器的開發人員,可以流暢地完成安裝程序嗎?:
我們正在處理這個問題。我們致力於向所有 Android 裝置上的瀏覽器提供這項功能,日後也會分享更多詳細資訊。