網路分享目標:可讓 PWA 接收其他已安裝應用程式的共用內容 裝置。舉例來說,圖片編輯器等應用程式 從相機應用程式或社群網路接收圖像或影片,以便分享圖像或影片。
從 Chrome 第 86 版開始,網路共用目標現在也支援使用 受信任的網路活動。雖然 PWA 應該立即可用,但還是需要進行一些變更 Android 應用程式
本文假設開發人員已熟悉「受信任的網路活動」,剛接觸的讀者 技術可透過整合指南開始進行。
同樣行,對於在 PWA 中實作網路分享目標的詳細說明, 範圍及開發人員,請參閱這篇文章瞭解詳情。
系統將使用 https://scrapbook-pwa.web.app/ 的試用版應用程式做為此應用程式的 PWA 文章及其原始碼可在 GitHub 取得,而 Android 應用程式是以 「信任的網路活動」基本示範。
將網路共用目標新增至 Android 應用程式
如要修改以 Trusted Web Activity 為基礎的現有應用程式以實作網路分享功能 您必須指定、修改三個不同的檔案:
build.gradle
android-browser-helper 程式庫已更新,開始支援網路分享目標。身為 請先更新應用程式,使其使用高於或等於 2.0.1 的版本。
dependencies {
...
implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.2.0'
}
res/strings.xml
應用程式需要向「信任的網路活動」告知其支援的共用詳情 接收資料,例如要開啟的網址、使用的方法以及支援的 MIME 類型。
方法是透過 JSON,其中包含字串資源的受信任網路活動。
欄位與網路資訊清單提供的 share_target
欄位相同,可以新增到
是 strings.xml
中的字串,幾乎保持原樣,但有兩點重要事項:
- 動作屬性的值必須是完整網址,包括來源。
- 雙引號必須逸出,因此每個
"
都會變成\"
。
以下是 https://scrapbook-pwa.web.app/manifest.json 的 share_target
區段外觀
例如:
{
...
"share_target": {
"action": "/_share-target",
"enctype": "multipart/form-data",
"method": "POST",
"params": {
"files": [{
"name": "media",
"accept": [
"audio/*",
"image/*",
"video/*"
]
}]
}
},
...
}
而新字串元素會如下所示:
<string name="share_target">
{
\"action\": \"https://twa-web-scrapbook.web.app/_share-target\",
\"method\": \"POST\",
\"enctype\": \"multipart/form-data\",
\"params\": {
\"files\": [{
\"name\": \"media\",
\"accept\": [\"image/*\", \"audio/*\", \"video/*\"]
}]
}
}
</string>
AndroidManifest.xml
Android 資訊清單需要幾項變更。首先,我們必須確認
已宣告、匯出及啟用 DelegationService
。
根據基本試用版建構應用程式的開發人員已享有這項服務 ,標記應該位於應用程式標記內,如下所示:
<service
android:name="com.google.androidbrowserhelper.trusted.DelegationService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.support.customtabs.trusted.TRUSTED_WEB_ACTIVITY_SERVICE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
最後,需要在 LauncherActivity 活動標記中加入兩個新項目:
- 參照 string.xml 中定義的 JSON 的 meta-data
標記。
- intent-filter
,用於宣告應用程式能夠處理其他 MIME 類型
應用程式中的應用程式。
<meta-data
android:name="android.support.customtabs.trusted.METADATA_SHARE_TARGET"
android:resource="@string/share_target"/>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="audio/*" />
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
</intent-filter>
如上述標記所示,您應為每個宣告的 mime-type
新增 data
元素
share_target
JSON 檔案。
結論
網站分享目標整合功能可讓受信任網路活動中的 PWA 更深入 與 Android 裝置上安裝的其他應用程式進行整合。
如上述步驟所述,在 現有的 Android 應用程式也運用「受信任的網路活動」,現在 android-browser-helper 能簡化相關作業。
請參閱網路分享目標文章,進一步瞭解如何在 PWA 和 請參閱 Web Share API,瞭解如何分享 Progressive Web App 的內容。
疑難排解
嘗試從其他應用程式分享檔案時,我的應用程式沒有顯示選項。
如果應用程式未顯示為選項,表示 intent-filter
不正確。請仔細檢查 intent-filter
標記,並確認其中含有正確的動作。
類別和 mime-types
,均由應用程式處理
我的應用程式顯示為選項,但 PWA 已經啟動,但資料並未分享。
有幾個原因可能會造成這個情況。此時,請務必檢查清單:
- 確認 Digital Asset Links 驗證成功。
- 檢查 strings.xml 中的 JSON 內容是否正確。