Link Aplikasi adalah deep link yang menggunakan skema HTTP atau HTTPS dan diverifikasi oleh Android sebagai terkait dengan situs Anda. Untuk mendaftar guna menangani Link Aplikasi, ikuti langkah-langkah berikut:
- Tambahkan satu atau beberapa filter Intent ke manifes aplikasi Anda yang menentukan domain atau URL situs Anda.
- Tambahkan
autoVerify="true"attribute
ke elemen filter Intent. Hal ini memberi sinyal kepada sistem bahwa sistem harus mencoba memverifikasi skema dan domain host terhadap konfigurasiassetlinks.json
situs Anda. - Mendeklarasikan asosiasi situs.
Berikut adalah contoh deklarasi Link Aplikasi dengan skema dan host serta
autoVerify="true
":
<activity
android:name=".MainActivity"
android:exported="true"
...>
<!-- Make sure you explicitly set android:autoVerify to "true". -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- If a user clicks on a link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<!-- Do not include other schemes, as this will prevent verification. -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="www.example.com" />
<data android:host="*.example.com" />
</intent-filter>
</activity>
Poin penting tentang kode
- AutoVerify: Atribut
android:autoVerify="true
" diperlukan untuk Link Aplikasi. Atribut ini memberi sinyal kepada sistem bahwa sistem harus mencoba memverifikasi pengaitan antara aplikasi Anda dan skema serta domain yang ditentukan dalam tag<data>
. Sebaiknya tambahkanautoVerify="true
" ke setiap filter Intent yang ingin Anda verifikasi. - Elemen data: Setiap filter Intent Link Aplikasi harus menyertakan satu atau beberapa elemen
<data>
yang menentukan skema dan format host yang cocok dengan domain situs yang dapat diverifikasi. - Skema: Filter intent harus menyertakan elemen
<data>
untuk skemahttp
danhttps
. Host: Anda dapat menambahkan elemen
<data>
secara opsional untuk mencocokkan satu atau beberapa host. Gunakan karakter pengganti (*
) untuk mencocokkan beberapa subdomain (seperti*.example.com
). Sistem akan mencoba memverifikasi setiap host terhadap file assetlinks.json di situs Anda. Perhatikan bahwa perutean tingkat jalur apa pun harus ditangani oleh file assetlinks.json (lihat bagian praktik terbaik di bawah).Beberapa Host: Jika Anda mendeklarasikan beberapa domain host, sistem (di Android 12+) akan mencoba memverifikasi setiap domain. Jika ada host yang diverifikasi, aplikasi akan menjadi pengendali default untuk link dari host yang diverifikasi tersebut. Di Android 11 dan yang lebih lama, verifikasi gagal jika satu host tidak dapat diverifikasi.
Beberapa filter Intent: Anda harus membuat filter terpisah jika ingin mendeklarasikan URL unik (seperti kombinasi skema dan host tertentu), karena beberapa elemen
<data>
dalam filter intent yang sama akan digabungkan untuk memperhitungkan semua variasi atribut gabungannya.
Pertimbangan untuk aturan filter manifes
Jika Anda menyiapkan filter untuk digunakan dengan Link Aplikasi Dinamis di Android 15 dan yang lebih tinggi, penting untuk diingat bahwa aturan dinamis yang dideklarasikan dalam file assetlinks.json sisi server tidak dapat memperluas cakupan aturan URL yang Anda deklarasikan secara statis dalam manifes aplikasi.
Oleh karena itu, sebaiknya gunakan pendekatan ini:
- Dalam manifes aplikasi, tetapkan cakupan seluas mungkin, seperti dengan mendeklarasikan skema dan domain saja
- Mengandalkan aturan assetlinks.json sisi server untuk penyempurnaan lebih lanjut, seperti perutean tingkat jalur.
Dengan konfigurasi ideal ini, Anda dapat menambahkan jalur App Link baru secara dinamis dalam file assetlinks.json
sesuai kebutuhan, dengan mengetahui bahwa jalur tersebut akan sesuai dengan cakupan luas yang telah Anda tetapkan dalam manifes aplikasi.
Mendukung Link Aplikasi untuk beberapa host
Sistem harus dapat memverifikasi host yang ditentukan dalam elemen data filter intent URL aplikasi dengan file Digital Asset Links yang dihosting di domain web masing-masing dalam filter intent tersebut. Jika verifikasi gagal, sistem akan kembali ke perilaku standarnya untuk menyelesaikan intent, seperti yang dijelaskan dalam Membuat Deep Link ke Konten Aplikasi. Namun, aplikasi masih dapat diverifikasi sebagai pengendali default untuk pola URL mana pun yang ditentukan dalam filter intent aplikasi lainnya.
Misalnya, aplikasi dengan filter intent berikut akan lolos verifikasi
hanya untuk https://www.example.com
jika file assetlinks.json
ditemukan di
https://www.example.com/.well-known/assetlinks.json
, tetapi tidak
https://www.example.net/.well-known/assetlinks.json
:
<application>
<activity android:name=”MainActivity”>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="www.example.com" />
</intent-filter>
</activity>
<activity android:name="SecondActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="www.example.net" />
</intent-filter>
</activity>
</application>
Mendukung penautan aplikasi untuk beberapa subdomain
Protokol Digital Asset Links memperlakukan subdomain di filter intent Anda sebagai host yang unik dan terpisah. Jadi, jika filter intent Anda mencantumkan beberapa host dengan subdomain yang berbeda, Anda harus memublikasikan assetlinks.json
yang valid di setiap domain.
Misalnya, filter intent berikut menyertakan www.example.com
dan
mobile.example.com
sebagai host URL intent yang disetujui. Jadi, assetlinks.json
yang valid harus dipublikasikan di https://www.example.com/.well-known/assetlinks.json
dan https://mobile.example.com/.well-known/assetlinks.json
.
<application>
<activity android:name="MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:host="mobile.example.com" />
</intent-filter>
</activity>
</application>
Atau, jika Anda mendeklarasikan hostname dengan karakter pengganti (seperti
*.example.com
), Anda harus memublikasikan file assetlinks.json
di root
hostname (example.com
). Misalnya, aplikasi dengan filter intent berikut
akan lolos verifikasi untuk setiap subnama example.com
(seperti
foo.example.com
) selama file assetlinks.json
dipublikasikan di
https://example.com/.well-known/assetlinks.json
:
<application>
<activity android:name="MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="*.example.com" />
</intent-filter>
</activity>
</application>
Periksa beberapa aplikasi yang terkait dengan domain yang sama
Jika Anda memublikasikan beberapa aplikasi yang masing-masing terhubung dengan domain yang sama, aplikasi tersebut masing-masing dapat diverifikasi dengan sukses. Namun, jika aplikasi dapat menyelesaikan host domain dan jalurnya yang sama persis, seperti yang terjadi pada aplikasi versi ringan dan lengkap, hanya aplikasi yang baru saja diinstal yang dapat menyelesaikan intent web untuk domain tersebut.
Dalam kasus seperti ini, periksa kemungkinan adanya aplikasi yang bentrok di perangkat pengguna,
asalkan Anda memiliki visibilitas paket yang diperlukan. Kemudian, di aplikasi Anda,
tampilkan dialog pemilih kustom yang berisi hasil dari memanggil
queryIntentActivities
. Pengguna dapat memilih aplikasi yang disukai dari
daftar aplikasi yang cocok yang muncul dalam dialog.