Web Share Target memungkinkan PWA menerima konten bersama 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 untuk menerima gambar atau video untuk dibagikan.
Mulai Chrome 86, Web Share Target kini juga tersedia untuk aplikasi yang menggunakan Aktivitas Web Tepercaya. Meskipun PWA seharusnya dapat langsung digunakan, beberapa perubahan diperlukan pada Aplikasi Android.
Artikel ini mengasumsikan bahwa developer memahami Aktivitas Web Tepercaya. Pembaca yang baru mengenal teknologi ini dapat memulai dengan Panduan Integrasi.
Demikian pula, penjelasan lengkap tentang implementasi Web Share Target 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, dan Aplikasi Android didasarkan pada demo Aktivitas Web Tepercaya dasar.
Menambahkan Web Share Target ke aplikasi Android
Untuk mengubah aplikasi berbasis Aktivitas Web Tepercaya yang ada untuk menerapkan Web Share Target, modifikasi pada tiga file berbeda diperlukan:
build.gradle
Library android-browser-helper telah diupdate dengan dukungan untuk Web Share Target. 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 perlu memberi tahu Aktivitas Web Tepercaya detail berbagi yang didukungnya, 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. Kolomnya sama dengan kolom share_target yang tersedia di Manifes Web dan dapat ditambahkan ke string di dalam strings.xml, hampir seperti apa adanya, dengan dua catatan penting:
- Nilai atribut tindakan harus berupa URL lengkap, termasuk asal.
- Tanda kutip ganda harus di-escape, sehingga setiap
"menjadi\".
Berikut tampilan bagian share_target dari https://googlechrome.github.io/samples/scrapbook-pwa/manifest.json terlihat
seperti:
{
...
"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 harus memastikan bahwa DelegationService dideklarasikan, diekspor, dan diaktifkan.
Developer yang membuat aplikasi berdasarkan demo dasar akan menyertakan layanan dan markup harus berada di dalam tag aplikasi dan 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 harus 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 Web Share Target memungkinkan PWA di dalam Aktivitas Web Tepercaya terintegrasi lebih mendalam dengan aplikasi lain yang diinstal di perangkat Android.
Seperti yang dijelaskan dalam langkah-langkah di atas, markup tambahan yang diperlukan untuk menambahkan dukungan bagi API di aplikasi Android yang ada yang menggunakan Aktivitas Web Tepercaya menjadi lebih sederhana dengan android-browser-helper.
Lihat artikel Web Share Target untuk mempelajari lebih lanjut cara menggunakan API di PWA dan Web Share API untuk mempelajari cara berbagi konten dari Progressive Web App.
Pemecahan masalah
Aplikasi saya tidak ditampilkan sebagai opsi saat saya mencoba berbagi file dari aplikasi lain.
Jika aplikasi tidak ditampilkan sebagai opsi, hal 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 checklist hal-hal yang perlu diperhatikan:
- Pastikan validasi Digital Asset Links berhasil.
- Periksa JSON di dalam strings.xml untuk memastikan kebenarannya.