Target Berbagi Web memungkinkan PWA menerima konten yang dibagikan dari aplikasi lain yang diinstal di perangkat. Fitur ini dapat digunakan, misalnya, oleh aplikasi seperti editor gambar untuk menerima gambar dari aplikasi kamera, atau jaringan sosial guna menerima gambar atau video untuk dibagikan.
Mulai Chrome 86, Target Berbagi Web kini juga tersedia untuk aplikasi yang menggunakan Aktivitas Web Tepercaya. Meskipun PWA akan berfungsi secara otomatis, beberapa perubahan diperlukan pada Aplikasi Android.
Artikel ini mengasumsikan bahwa developer sudah memahami Aktivitas Web Tepercaya. Pembaca yang baru mengenal teknologi ini dapat memulai dengan Panduan Integrasi.
Demikian pula, penjelasan lengkap tentang penerapan Target Berbagi Web di PWA berada di luar cakupan dan developer dapat menemukan informasi selengkapnya di artikel ini.
Aplikasi demo di https://scrapbook-pwa.web.app/ akan digunakan sebagai PWA untuk artikel ini, dan kode sumbernya tersedia di GitHub, serta Aplikasi Android didasarkan pada demo Aktivitas Web Tepercaya dasar.
Menambahkan Target Berbagi Web ke aplikasi Android
Untuk mengubah aplikasi berbasis Aktivitas Web Tepercaya yang ada guna mengimplementasikan Target Berbagi Web, diperlukan modifikasi pada tiga file berbeda:
build.gradle
Library android-browser-helper telah diupdate dengan dukungan untuk Target Berbagi Web. Sebagai langkah pertama, update aplikasi untuk menggunakan versi yang lebih tinggi atau sama dengan 2.0.1.
dependencies {
...
implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.2.0'
}
res/strings.xml
Aplikasi harus memberi tahu Aktivitas Web Tepercaya detail berbagi yang didukungnya untuk menerima, seperti URL yang akan dibuka, metode yang akan digunakan, dan jenis mime yang didukung.
Hal ini dilakukan melalui JSON, yang disediakan untuk Aktivitas Web Tepercaya dengan resource string. Kolom
ini sama dengan kolom share_target
yang tersedia di Manifes Web dan dapat ditambahkan ke
string di dalam strings.xml
, hampir apa adanya, dengan dua catatan penting:
- Nilai atribut tindakan harus berupa URL lengkap, termasuk origin.
- Tanda kutip ganda harus di-escape, sehingga setiap
"
menjadi\"
.
Berikut tampilan bagian share_target
dari https://scrapbook-pwa.web.app/manifest.json:
{
...
"share_target": {
"action": "/_share-target",
"enctype": "multipart/form-data",
"method": "POST",
"params": {
"files": [{
"name": "media",
"accept": [
"audio/*",
"image/*",
"video/*"
]
}]
}
},
...
}
Dan elemen string baru akan terlihat seperti berikut:
<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
Beberapa perubahan diperlukan pada Manifes Android. Pertama, kita perlu memastikan bahwa
DelegationService
dideklarasikan, diekspor, dan diaktifkan.
Developer yang membuat aplikasi mereka berdasarkan demo dasar sudah akan menyertakan layanan ini dan markup akan berada di dalam tag aplikasi serta terlihat seperti berikut:
<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>
Terakhir, dua item baru perlu ditambahkan ke tag aktivitas LauncherActivity:
- Tag meta-data
yang mereferensikan JSON yang ditentukan dalam strings.xml.
- intent-filter
yang mendeklarasikan jenis mime yang dapat ditangani aplikasi ke aplikasi
lain di perangkat.
<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>
Seperti yang dapat dilihat dalam markup di atas, elemen data
harus ditambahkan untuk setiap mime-type
yang dideklarasikan
dalam JSON share_target
.
Kesimpulan
Integrasi Target Berbagi Web memungkinkan PWA di dalam Aktivitas Web Tepercaya terintegrasi lebih mendalam dengan aplikasi lain yang diinstal di perangkat Android.
Seperti yang dijelaskan pada langkah-langkah di atas, markup tambahan yang diperlukan untuk menambahkan dukungan bagi API di aplikasi Android yang ada dan menggunakan Trusted Web Activity menjadi lebih sederhana dengan android-browser-helper.
Lihat artikel Target Berbagi Web untuk mempelajari lebih lanjut penggunaan API di PWA dan Web Share API untuk mempelajari cara membagikan konten dari Progressive Web App.
Pemecahan masalah
Aplikasi saya tidak ditampilkan sebagai opsi saat saya mencoba membagikan file dari aplikasi lain.
Jika aplikasi tidak ditampilkan sebagai opsi, ini menunjukkan bahwa intent-filter
salah. Periksa kembali markup intent-filter
, pastikan markup tersebut berisi tindakan,
kategori, dan mime-types
yang benar yang ditangani oleh aplikasi.
Aplikasi saya ditampilkan sebagai opsi, PWA dimulai, tetapi data tidak dibagikan.
Ada beberapa hal yang dapat menyebabkan hal ini. Berikut adalah checklist hal-hal yang perlu diperhatikan:
- Pastikan validasi Digital Asset Links berhasil.
- Periksa JSON dalam strings.xml untuk memastikan ketepatannya.