使用者在 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/為獨立應用程式,不會顯示任何瀏覽器 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 限制意圖篩選器
如果不希望漸進式網頁應用程式處理網站中的所有網址,可以在網頁應用程式資訊清單中加入 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 會共用並處於啟用狀態,任何用戶端儲存空間都可存取,且 Service Worker 已安裝完畢,隨時可供使用。
更新 WebAPK
WebAPK 的更新方式說明已移至「Chrome 如何處理網頁應用程式資訊清單的更新」。
常見問題
系統會使用哪些圖示產生啟動畫面?
建議您為啟動畫面提供至少兩種大小的圖示:192 像素和 512 像素。我們收到回饋,指出啟動畫面上的圖示太小。在 Chrome 71 以上版本中產生的 WebAPK,會在啟動畫面上顯示較大的圖示。只要提供建議的圖示,就不需要採取任何行動。
如果使用者已安裝網站的原生應用程式,會發生什麼情況?
與現今的「新增至主畫面」功能類似,使用者可以新增網站,不必安裝任何原生應用程式。如果您預期使用者可能會同時安裝兩者,建議您將網站的圖示或名稱與原生應用程式區分開來。
如果使用者清除 Chrome 的快取,已安裝網站的儲存空間會一併清除嗎?
是。
換新裝置後,應用程式會重新安裝嗎?
目前還不行,但我們認為這是重要的領域,因此正在研究如何實現這項功能。
權限的處理方式為何?我會看到 Chrome 提示還是 Android 提示?
權限仍會透過 Chrome 管理。使用者會看到 Chrome 提示,要求授予權限,並可在 Chrome 設定中編輯權限。
這項功能適用於哪些 Android 版本?
只要 Android 裝置搭載的 Android 版 Google Chrome 版本為 Jelly Bean 以上,即可安裝漸進式網頁應用程式。
是否使用 WebView?
不會,網站會以使用者新增網站時使用的 Chrome 版本開啟。
我們可以將建立的 APK 上傳至 Play 商店嗎?
否。如要上傳自己的 APK,請參閱可信賴的網頁活動。
這些應用程式是否已在 Play 商店上架?
否。如要上傳自己的 APK 以在 Play 商店中列出,請查看「Trusted Web Activities」。
我是 Android 上的其他瀏覽器開發人員,可以採用這種無縫安裝程序嗎?
我們正在處理這個問題。我們致力於讓 Android 上的所有瀏覽器都能使用這項功能,近期會分享更多詳細資訊。