當使用者將漸進式網頁應用程式加到 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 裝置上的瀏覽器提供這項功能,日後也會分享更多詳細資訊。