Web Share Target 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 jejaring sosial untuk menerima gambar atau video untuk dibagikan.
Mulai Chrome 86, Target Berbagi Web kini juga tersedia untuk aplikasi yang menggunakan Aktivitas Web Tepercaya. Meskipun PWA harus langsung berfungsi, diperlukan beberapa perubahan untuk Aplikasi Android.
Artikel ini mengasumsikan bahwa developer sudah memahami Aktivitas Web Tepercaya. Pembaca yang baru menggunakan teknologi dapat memulai dengan Panduan Integrasi.
Sejalan dengan itu, penjelasan lengkap tentang penerapan Target Berbagi Web dalam PWA di luar developer dapat menemukan informasi selengkapnya di artikel ini.
Aplikasi demo di https://scrapbook-pwa.web.app/ akan digunakan sebagai PWA untuk 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 guna menerapkan Berbagi Web Target, modifikasi pada tiga file berbeda diperlukan:
build.gradle
Library android-browser-helper telah diupdate dengan dukungan untuk Web Share Target. Sebagai seorang 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 tentang detail berbagi yang didukungnya diterima, 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. Tujuan
sama dengan kolom share_target
yang tersedia di Manifes Web dan dapat ditambahkan ke
string di dalam strings.xml
, hampir sebagaimana 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
https://scrapbook-pwa.web.app/manifest.json
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
Diperlukan beberapa perubahan di Manifes Android. Pertama, kita perlu memastikan bahwa
DelegationService
dideklarasikan, diekspor, dan diaktifkan.
Developer yang membangun aplikasi berdasarkan demo dasar sudah memiliki layanan ini disertakan 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 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 terlihat pada markup di atas, elemen data
harus ditambahkan untuk setiap mime-type
yang dideklarasikan
di JSON share_target
.
Kesimpulan
Integrasi Target Berbagi Web memungkinkan PWA di dalam Aktivitas Web Tepercaya menjadi lebih mendalam terintegrasi dengan aplikasi lain yang diinstal pada perangkat Android.
Seperti yang dijelaskan dalam langkah di atas, markup tambahan yang diperlukan untuk menambahkan dukungan bagi API dalam aplikasi Android yang ada dan 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 membagikan konten dari Progressive Web App.
Pemecahan masalah
Aplikasi saya tidak muncul sebagai opsi saat saya mencoba membagikan file dari aplikasi lain.
Jika aplikasi tidak ditampilkan sebagai opsi, hal ini menunjukkan bahwa intent-filter
adalah
salah. Periksa kembali markup intent-filter
, pastikan markup berisi tindakan yang benar,
kategori, dan mime-types
yang ditangani oleh aplikasi.
Aplikasi saya ditampilkan sebagai opsi, PWA dimulai, tetapi datanya 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.