Dari web ke aplikasi dalam satu DeepLink



Aplikasi Android merupakan cerminan dari situs atau layanan dan seringkali mewakili fungsionalitas serupa di shell yang mudah digunakan. Karena itu, masalah navigasi antara halaman di web dan klien yang diinstal menjadi mendesak. Untuk mengatasi masalah ini, deeplink diciptakan. Di bawah kucing, Anda akan menemukan kisah yang menarik tentang bagaimana kami menerapkannya di rumah dan menangani kasus ini ketika pengguna belum menginstal aplikasi kami.

Deeplinks diciptakan sejak lama sehingga sekarang sulit membayangkan aplikasi tanpa mereka. Teknologi itu sendiri tidak memerlukan API Android baru, namun, jika Anda menyelesaikan Pengindeksan Aplikasi, Anda mungkin menemukan fakta bahwa itu berfungsi dengan API 17.

Mari kita kembali ke deeplink. Konfigurasi mereka adalah seperangkat pengaturan untuk maksud-filter dalam manifes aplikasi, yang menggambarkan pola tautan yang didukung.

Sebagai contoh:

<intent-filter><data android:host="best.memes" android:pathPrefix="/memes" android:scheme="http" /> <data android:host="best.memes" android:pathPrefix="/jokes" android:scheme="https" /></intent-filter> 

Setelah manipulasi sederhana ini, setiap kali Anda mengklik tautan yang cocok dengan pengaturan filter, pengguna ditawari pilihan antara beberapa aplikasi, termasuk Anda. Selanjutnya, aktivitas yang kami atur filter tujuan akan menerima Intent yang berisi tautan. Jika Anda mendapatkannya menggunakan metode Intent # getData dan menguraikan parameter yang diperlukan, Anda dapat mengarahkan pengguna langsung ke bagian yang menarik.

Setelah implementasi, mungkin muncul pertanyaan yang masuk akal: apa yang harus dilakukan jika pengguna belum memiliki aplikasi? Jawabannya adalah diplink khusus, yang dalam hal ini dapat mengarahkan seseorang ke Pasar. Dengan uji tuntas, Anda dapat membuat tautan semacam itu sendiri, tetapi tidak ada jaminan bahwa tautan itu akan berfungsi dengan semua peramban dan pada semua versi Android. Sekarang ada beberapa layanan yang menawarkan solusi untuk setidaknya sebagian dari masalah ini, misalnya, AppsFlyer dengan OneLink atau Firebase dengan DynamicLink. Semuanya bekerja dengan cara yang kurang lebih sama, hanya DynamicLink yang menggunakan layanan Google yang telah diinstal untuk memproses diplink.

Onelink


OneLink sendiri mengarah ke server AppsFlyer; mereka menentukan dari perangkat mana pengguna memasuki jaringan, dan mengarahkannya ke alamat yang sesuai. Anda dapat mengatur pengalihan untuk desktop, Android, dan iOS. Ketika aplikasi Android diinstal, tautan tersebut akan masuk melalui Intent sebagai deeplink biasa. Ketika tidak ada aplikasi, Google Chrome dan Google Play ikut bermain.

Kehadiran aplikasi diperiksa oleh browser. Chrome memiliki spesifikasi untuk format tautan tertentu, yang kemudian dikonversi ke Intent dan dikirim ke sistem. Ini memberikan pengaturan tautan ke Google Play jika aplikasi tidak diinstal. Rincian lebih lanjut dapat ditemukan di sini .

Secara umum, di Google Play, Anda dapat mentransfer tautan ke aplikasi sedemikian rupa sehingga setelah instalasi dan peluncuran, itu akan melewatkan bagian dari itu lebih lanjut. Ini diimplementasikan menggunakan url parameter kueri dan akan terlihat seperti ini:

play.google.com/store/apps/details?id=memes.best&url=https%3A%2F%2Fbest.memes%2Fjokes

Dalam hal ini, best.memes / jokes akan masuk ke dalam aplikasi setelah diinstal sebagai deeplink. Secara default, AppsFlyer tidak berfungsi seperti ini: ia menawarkan untuk mendapatkan tautan melalui antarmuka pustaka. Deeplink itu sendiri rupanya ditransfer ke aplikasi melalui server layanan.

 AppsFlyerLib.getInstance().init(KEY, new AppsFlyerConversionListener() { @Override public void onInstallConversionDataLoaded(final Map<String, String> map) { } @Override public void onInstallConversionFailure(final String s) { } @Override public void onAppOpenAttribution(final Map<String, String> map) { } @Override public void onAttributionFailure(final String s) { } }, mContext); 

Ini sangat merepotkan, karena, pertama, kita tidak dapat mengerti dengan pasti apakah kita perlu menunggu beberapa parameter atau jika pengguna hanya mengklik ikon dan tidak akan ada parameter. Kedua, kami ingin segera membuka bagian aplikasi yang diinginkan, tanpa kunci dan harapan yang tidak perlu. AppsFlyer menawarkan untuk membuka layar utama, dan ketika parameternya tiba (dan jika mereka tiba), kemudian mengarahkan ulang. Pendekatan ini tidak cocok untuk kami, jadi kami membuat url kami di Google Play dengan parameter untuk kasus ketika pengguna mengklik pada diplink dari perangkat Android dan tidak memiliki aplikasi. Kami mengaturnya di Onelink untuk mendapatkan tautan dalam aplikasi tanpa harus menunggu perpustakaan.

OneLink bekerja dengan baik sampai kami mencoba menggeledahnya menjadi Slack. Faktanya adalah dia membuka tautan di peramban bawaannya melalui Tab Kustom Chrome. Singkatnya, ini adalah tab browser yang terbuka selama aplikasi Anda dan dapat dikustomisasi agar tidak keluar dari gaya umum (detail lebih lanjut dapat ditemukan di sini ). Dalam hal ini, versi web Google Play akan terbuka dan diplink ke aplikasi setelah instalasi tidak akan diteruskan. Demikian pula, peramban berperilaku jika Anda menyalin OneLink ke bilah alamat dan mengikuti tautan. Tentang hal ini, pengembang Chrome menulis di Release Notes beberapa versi yang lalu. Intinya adalah bahwa dengan pendekatan ini, pengalihan di Google Play tidak berfungsi di browser ketika aplikasi tidak diinstal, dan pengguna tetap di web. OneLink gagal mengatasi perilaku ini, jadi kami beralih ke DynamicLink.

Tautan dinamis


Integrasi mendalam dari Layanan Google Play dalam sistem memungkinkan mereka untuk mengoptimalkan ketersediaan aplikasi target pada perangkat. Ini adalah ekosistem yang agak tertutup, jadi tidak mungkin untuk memahami secara menyeluruh prinsip-prinsip operasinya, namun, semuanya menunjukkan bahwa Chrome membuka kegiatan dengan kemajuan, yang dimiliki oleh Google Play Services, yang menentukan cara menghadapinya dengan tautan dalam. Setelah itu, pengalihan terjadi baik di Google Play atau dalam aplikasi. Dalam hal ini, deeplink kemudian memasuki aplikasi melalui Intent, yaitu, tanpa kruk perpustakaan tambahan.

Secara subyektif, pendekatan ini tidak bekerja lebih cepat daripada OneLink, tetapi ia bekerja ketika Anda membuka tautan di Tab Kustom Chrome, yang merupakan keuntungan signifikan karena banyak aplikasi menggunakannya.

Di antara hal-hal lain, Firebase memungkinkan Anda untuk melihat cara kerja tautan dan di mana pengguna akan dialihkan pada setiap platform dalam setiap kasus. Itu terlihat seperti ini:


Kesimpulan


Sebagai ringkasan, saya menyiapkan tabel pivot. Saya pikir OneLink dapat dipahami sebagai solusi kompetitif, karena hanya DynamicLink yang memiliki akses ke Layanan Google Play, oleh karena itu, seharusnya tidak ada perbedaan signifikan antara layanan lainnya.
OneLink Aplikasi Tujuan DiinstalOneLink Aplikasi Tujuan TIDAK TerpasangTautan dinamis Aplikasi Tujuan DiinstalTautan dinamis Aplikasi Tujuan TIDAK Terpasang
Tautan dibuka oleh sistem (ACTION_VIEW)+Saya harus “mengeraskan” untuk mendapatkan deeplink tepat di awal++
Tautan terbuka di Tab Kustom Chrome--++
Klik tautan di browser+Saya harus “mengeraskan” untuk mendapatkan deeplink tepat di awal++
Tautan disalin ke bilah alamat--++

Tabel menunjukkan bahwa dalam implementasi dengan DynamicLinks semuanya berfungsi tanpa kruk dan dalam semua kasus menarik bagi kami.

Tautan yang bermanfaat:


Terima kasih atas perhatian anda! Saya akan senang membahas dalam komentar bagaimana Anda memecahkan masalah yang sama.

Source: https://habr.com/ru/post/id477602/


All Articles