Aktifkan Target Berbagi Web di Aktivitas Web Tepercaya

André Cipriani Bandarra
André Cipriani Bandarra

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 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 berfungsi dengan baik, ada beberapa perubahan yang diperlukan pada Aplikasi Android.

Artikel ini mengasumsikan bahwa developer sudah memahami Aktivitas Web Tepercaya. Pembaca yang baru mengenal teknologi ini dapat memulai Panduan Integrasi.

Sejalan dengan itu, penjelasan lengkap mengenai penerapan Target Berbagi Web di PWA berada di luar cakupan, dan developer dapat menemukan informasi lebih lanjut dalam 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 Target Berbagi Web ke aplikasi Android

Untuk mengubah aplikasi berbasis Aktivitas Web Tepercaya yang ada guna menerapkan 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 pembagian yang didukungnya yang dapat diterima, seperti URL mana yang akan dibuka, metode yang akan digunakan, dan jenis mime yang didukung.

Hal ini dilakukan melalui JSON, yang tersedia 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 sebagaimana adanya, dengan dua catatan penting:

  1. Nilai atribut tindakan harus berupa URL lengkap, termasuk asalnya.
  2. Tanda kutip ganda harus di-escape, sehingga setiap " menjadi \".

Seperti inilah 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 di Manifes Android. Pertama-tama, kita harus memastikan bahwa DelegationService dideklarasikan, diekspor, dan diaktifkan.

Layanan untuk developer yang telah mem-build aplikasi berdasarkan demo dasar akan menyertakan layanan dan markup harus 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 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 untuk 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 terlihat pada 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 untuk diintegrasikan secara 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 API di aplikasi Android yang ada dan menggunakan Aktivitas Web Tepercaya menjadi lebih sederhana oleh android-browser-helper.

Baca artikel Target Berbagi Web 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 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 berisi tindakan, kategori, dan mime-types yang benar yang telah 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 harus diperhatikan:

  • Pastikan validasi Digital Asset Links berhasil.
  • Periksa JSON di dalam strings.xml untuk mengetahui ketepatannya.