App-Linking di Android
Panduan ini akan membahas bagaimana Android 6.0 mendukung penautan aplikasi, teknik yang memungkinkan aplikasi seluler merespons URL di situs web. Ini akan membahas apa itu penautan aplikasi, cara menerapkan penautan aplikasi di aplikasi Android 6.0, dan cara mengonfigurasi situs web untuk memberikan izin ke aplikasi seluler untuk domain.
Gambaran Umum Penautan Aplikasi
Aplikasi seluler tidak lagi hidup dalam silo - dalam banyak kasus mereka adalah komponen penting dari bisnis mereka, bersama dengan situs web mereka. Sangat diinginkan bagi bisnis untuk menghubungkan kehadiran web dan aplikasi seluler mereka dengan lancar, dengan tautan di situs web yang meluncurkan aplikasi seluler dan menampilkan konten yang relevan di aplikasi seluler. Penautan aplikasi (juga disebut sebagai deep-linking) adalah salah satu teknik yang memungkinkan perangkat seluler merespons URI dan meluncurkan aplikasi seluler yang sesuai dengan URI tersebut.
Android menangani penautan aplikasi melalui sistem niat - ketika pengguna mengklik tautan di browser seluler, browser seluler akan mengirimkan niat yang akan didelegasikan Android ke aplikasi terdaftar. Misalnya, mengklik tautan di situs web memasak akan membuka aplikasi seluler yang terkait dengan situs web tersebut dan menampilkan resep tertentu kepada pengguna. Jika ada lebih dari satu aplikasi yang terdaftar untuk menangani niat tersebut, maka Android akan menaikkan apa yang dikenal sebagai dialog disambiguasi yang akan meminta pengguna aplikasi apa untuk memilih aplikasi yang harus menangani niat, misalnya:
Android 6.0 meningkatkan hal ini dengan menggunakan penanganan tautan otomatis. Dimungkinkan bagi Android untuk secara otomatis mendaftarkan aplikasi sebagai handler default untuk URI - aplikasi akan secara otomatis meluncurkan dan menavigasi langsung ke Aktivitas yang relevan. Cara Android 6.0 memutuskan untuk menangani klik URI bergantung pada kriteria berikut:
- Aplikasi yang ada sudah dikaitkan dengan URI – Pengguna mungkin telah mengaitkan aplikasi yang ada dengan URI. Dalam hal ini, Android akan terus menggunakan aplikasi tersebut.
- Tidak ada aplikasi yang dikaitkan dengan URI, tetapi aplikasi pendukung diinstal - Dalam skenario ini, pengguna belum menentukan aplikasi yang ada, sehingga Android akan menggunakan aplikasi pendukung yang diinstal untuk menangani permintaan.
- Tidak ada aplikasi yang terkait dengan URI, tetapi banyak aplikasi pendukung yang diinstal - Karena ada beberapa aplikasi yang mendukung URI, dialog disambiguasi akan ditampilkan dan pengguna harus memilih aplikasi mana yang akan menangani URI.
Jika pengguna tidak memiliki aplikasi yang terinstal yang mendukung URI, dan aplikasi kemudian diinstal, maka Android akan mengatur aplikasi tersebut sebagai handler default untuk URI setelah memverifikasi asosiasi dengan situs web yang terkait dengan URI.
Panduan ini akan membahas cara mengonfigurasi aplikasi Android 6.0 dan cara membuat dan menerbitkan file Tautan Aset Digital untuk mendukung penautan aplikasi di Android 6.0.
Persyaratan
Panduan ini memerlukan Xamarin.Android 6.1 dan aplikasi yang menargetkan Android 6.0 (API level 23) atau yang lebih tinggi.
Penautan aplikasi dimungkinkan di versi Android sebelumnya dengan menggunakan paket Rivets NuGet dari penyimpanan Komponen Xamarin. Paket Rivets tidak kompatibel dengan penautan aplikasi di Android 6.0; ini tidak mendukung penautan aplikasi Android 6.0.
Mengonfigurasi App-Linking di Android 6.0
Menyiapkan tautan aplikasi di Android 6.0 melibatkan dua langkah utama:
- Menambahkan satu atau beberapa filter niat untuk URI situs web - filter niat memandu Android dalam cara menangani klik URL di browser seluler.
- Menerbitkan file JSON Tautan Aset Digital di situs web - ini adalah file yang diunggah ke situs web dan digunakan oleh Android untuk memverifikasi hubungan antara aplikasi seluler dan domain situs web. Tanpa ini, Android tidak dapat menginstal aplikasi sebagai handel default untuk URI; pengguna harus melakukannya secara manual.
Mengonfigurasi Filter Niat
Anda perlu mengonfigurasi filter niat yang memetakan URI (atau kemungkinan serangkaian URI) dari situs web ke Aktivitas di aplikasi Android. Di Xamarin.Android, hubungan ini dibuat dengan menghiasi Aktivitas dengan IntentFilterAttribute. Filter niat harus mendeklarasikan informasi berikut:
Intent.ActionView
– Ini akan mendaftarkan filter niat untuk menanggapi permintaan untuk melihat informasiCategories
– Filter niat harus mendaftarkan Intent.CategoryBrowsable dan Intent.CategoryDefault untuk dapat menangani URI web dengan benar.DataScheme
– Filter niat harus mendeklarasikanhttp
dan/atauhttps
. Ini adalah satu-satunya dua skema yang valid.DataHost
– Ini adalah domain asal URI.DataPathPrefix
– Ini adalah jalur opsional ke sumber daya di situs web.AutoVerify
– Atribut memberiautoVerify
tahu Android untuk memverifikasi hubungan antara aplikasi dan situs web. Ini akan dibahas lebih lanjut di bawah ini.
Contoh berikut menunjukkan cara menggunakan IntentFilterAttribute untuk menangani tautan dari https://www.recipe-app.com/recipes
dan dari http://www.recipe-app.com/recipes
:
[IntentFilter(new [] { Intent.ActionView },
Categories = new[] { Intent.CategoryBrowsable, Intent.CategoryDefault },
DataScheme = "http",
DataHost = "recipe-app.com",
DataPathPrefix = "/recipe",
AutoVerify=true)]
public class RecipeActivity : Activity
{
// Code for the activity omitted
}
Android akan memverifikasi setiap host yang diidentifikasi oleh filter niat terhadap File Aset Digital di situs web sebelum mendaftarkan aplikasi sebagai handler default untuk URI. Semua filter niat harus melewati verifikasi sebelum Android dapat membuat aplikasi sebagai handler default.
Membuat File Tautan Aset Digital
Penautan aplikasi Android 6.0 mengharuskan Android memverifikasi hubungan antara aplikasi dan situs web sebelum mengatur aplikasi sebagai handler default untuk URI. Verifikasi ini akan terjadi ketika aplikasi pertama kali diinstal. File Tautan Aset Digital adalah file JSON yang dihosting oleh webdomain yang relevan.
Catatan
Atribut android:autoVerify
harus diatur oleh filter niat - jika tidak, Android tidak akan melakukan verifikasi.
File ditempatkan oleh webmaster domain di lokasi https://domain/.well-known/assetlinks.json.
File Aset Digital berisi meta-data yang diperlukan Android untuk memverifikasi asosiasi. File assetlinks.json memiliki pasangan kunci-nilai berikut:
namespace
– namespace aplikasi Android.package_name
– nama paket aplikasi Android (dinyatakan dalam manifes aplikasi).sha256_cert_fingerprints
– sidik jari SHA256 dari aplikasi yang ditandatangani. Silakan lihat panduan Menemukan Tanda Tangan Keystore Anda untuk informasi selengkapnya tentang cara mendapatkan sidik jari SHA256 dari aplikasi.
Cuplikan berikut adalah contoh assetlinks.json dengan satu aplikasi yang tercantum:
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "com.example",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
Dimungkinkan untuk mendaftarkan lebih dari satu sidik jari SHA256 untuk mendukung versi atau build aplikasi Anda yang berbeda. File assetlinks.json berikutnya ini adalah contoh mendaftarkan beberapa aplikasi:
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "example.com.puppies.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
},
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "example.com.monkeys.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
Situs web Google Digital Asset Links memiliki alat online yang dapat membantu membuat dan menguji file Aset Digital.
Menguji App-Links
Setelah menerapkan tautan aplikasi, berbagai bagian harus diuji untuk memastikan bahwa mereka bekerja seperti yang diharapkan.
Dimungkinkan untuk mengonfirmasi bahwa file Aset Digital diformat dengan benar dan dihosting dengan menggunakan API Tautan Aset Digital Google, seperti yang ditunjukkan dalam contoh ini:
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=
https://<WEB SITE ADDRESS>:&relation=delegate_permission/common.handle_all_urls
Ada dua pengujian yang dapat dilakukan untuk memastikan bahwa filter niat telah dikonfigurasi dengan benar dan bahwa aplikasi diatur sebagai handler default untuk URI:
File Aset Digital dihosting dengan benar seperti yang dijelaskan di atas. Pengujian pertama akan mengirimkan niat yang harus dialihkan Android ke aplikasi seluler. Aplikasi Android harus meluncurkan dan menampilkan Aktivitas yang terdaftar untuk URL. Pada jenis prompt perintah:
$ adb shell am start -a android.intent.action.VIEW \ -c android.intent.category.BROWSABLE \ -d "http://<domain1>/recipe/scalloped-potato"
Tampilkan kebijakan penanganan tautan yang ada untuk aplikasi yang diinstal pada perangkat tertentu. Perintah berikut akan mencadangkan daftar kebijakan tautan untuk setiap pengguna di perangkat dengan informasi berikut. Pada prompt perintah, jalankan perintah berikut ini:
$ adb shell dumpsys package domain-preferred-apps
Package
– Nama paket aplikasi.Domain
– Domain (dipisahkan oleh spasi) yang tautan webnya akan ditangani oleh aplikasiStatus
– Ini adalah status penanganan tautan saat ini untuk aplikasi. Nilai selalu berarti bahwa aplikasi telahandroid:autoVerify=true
menyatakan dan telah lulus verifikasi sistem. Ini diikuti dengan angka heksadesimal yang mewakili catatan preferensi sistem Android.
Contohnya:
$ adb shell dumpsys package domain-preferred-apps App linkages for user 0: Package: com.android.vending Domains: play.google.com market.android.com Status: always : 200000002
Ringkasan
Panduan ini membahas cara kerja penautan aplikasi di Android 6.0. Kemudian membahas cara mengonfigurasi aplikasi Android 6.0 untuk mendukung dan menanggapi tautan aplikasi. Ini juga membahas cara menguji penautan aplikasi di aplikasi Android.