當使用者將您的漸進式網頁應用程式新增至 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
時會發生什麼事,以及如何使用 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 的所有瀏覽器使用,不久後也會提供更多詳細資訊。