Untuk menerima Firebase Dynamic Links yang Anda buat, Anda harus menyertakan Dynamic Links SDK dalam aplikasi dan memanggil metode FirebaseDynamicLinks.getDynamicLink()
saat aplikasi tersebut dimuat, agar data diteruskan dalam Dynamic Link.
Menyiapkan Firebase dan Dynamic Links SDK
Tambahkan Firebase ke project Android jika Anda belum melakukannya.
Saat mendaftarkan aplikasi, tentukan kunci penandatanganan SHA-1 Anda. Jika Anda menggunakan App Links, tentukan juga kunci SHA-256 Anda.
-
Dalam file Gradle modul (level aplikasi) (biasanya
<project>/<app-module>/build.gradle.kts
atau<project>/<app-module>/build.gradle
), tambahkan dependensi untuk library Android Dynamic Links. Sebaiknya gunakan Firebase Android BoM untuk mengontrol pembuatan versi library.Untuk mengoptimalkan penggunaan Dynamic Links, sebaiknya aktifkan Google Analytics di project Firebase dan tambahkan Firebase SDK untuk Google Analytics ke aplikasi Anda.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependencies for the Dynamic Links and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
Dengan menggunakan Firebase Android BoM, aplikasi Anda akan selalu menggunakan versi library Android Firebase yang kompatibel.
(Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM
Jika memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi library Firebase di baris dependensinya.
Perlu diperhatikan bahwa jika Anda menggunakan beberapa library Firebase di aplikasi, sebaiknya gunakan BoM untuk mengelola versi library, yang memastikan bahwa semua versi kompatibel.
dependencies { // Add the dependencies for the Dynamic Links and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links-ktx:21.1.0' implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependencies for the Dynamic Links and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links' implementation 'com.google.firebase:firebase-analytics' }
Dengan menggunakan Firebase Android BoM, aplikasi Anda akan selalu menggunakan versi library Android Firebase yang kompatibel.
(Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM
Jika memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi library Firebase di baris dependensinya.
Perlu diperhatikan bahwa jika Anda menggunakan beberapa library Firebase di aplikasi, sebaiknya gunakan BoM untuk mengelola versi library, yang memastikan bahwa semua versi kompatibel.
dependencies { // Add the dependencies for the Dynamic Links and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links:21.1.0' implementation 'com.google.firebase:firebase-analytics:21.3.0' }
- Di Firebase console, buka bagian Dynamic Links. Setujui persyaratan layanan jika diminta.
Menambahkan filter intent untuk deep link
Seperti halnya deep link biasa, Anda harus menambahkan filter intent baru ke aktivitas yang menangani deep link untuk aplikasi Anda. Filter intent tersebut harus menangkap deep link domain Anda, karena Dynamic Link akan dialihkan ke domain Anda jika aplikasi diinstal. Hal ini diperlukan agar aplikasi Anda dapat menerima data Dynamic Link setelah diinstal/diupdate dari Play Store dan pengguna mengetuk tombol Continue. Di AndroidManifest.xml
:
<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:host="example.com" android:scheme="https"/> </intent-filter>
Ketika pengguna membuka Dynamic Link dengan deep link ke skema dan host yang Anda tentukan, aplikasi Anda akan memulai aktivitas dengan filter intent ini untuk menangani link tersebut.
Menangani deep link
Untuk menerima deep link, panggil metode getDynamicLink()
:
Kotlin+KTX
Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? -> // Get deep link from result (may be null if no link is found) var deepLink: Uri? = null if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.link } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... } .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }
Java
FirebaseDynamicLinks.getInstance() .getDynamicLink(getIntent()) .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() { @Override public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) { // Get deep link from result (may be null if no link is found) Uri deepLink = null; if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.getLink(); } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... // ... } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "getDynamicLink:onFailure", e); } });
Anda harus memanggil getDynamicLink()
di setiap aktivitas yang mungkin diluncurkan oleh link tersebut, meskipun link ini mungkin tersedia dari intent dengan menggunakan getIntent().getData()
. Ketika getDynamicLink()
dipanggil, link akan diambil dan data akan dihapus, sehingga aplikasi Anda hanya akan memprosesnya satu kali.
Biasanya, getDynamicLink()
dipanggil di aktivitas utama serta aktivitas apa pun yang diluncurkan oleh filter intent yang cocok dengan link tersebut.
Mencatat analisis
Peristiwa berikut dapat dilacak secara otomatis di Google Analytics dan ditampilkan di Firebase console.
dynamic_link_app_open
dynamic_link_first_open
dynamic_link_app_update
Untuk mendaftarkan peristiwa ini, Anda harus mengonfigurasi Google Analytics sebelum mengambil deep link. Pastikan kondisi berikut terpenuhi:
- Panggil
FirebaseDynamicLinks.getDynamicLink()
di titik entri aplikasi Anda: - Aktivitas peluncur, misalnya:
action="android.intent.action.MAIN"
,category="android.intent.category.LAUNCHER"
. - Titik entri aktivitas, misalnya:
onStart()
,onCreate()
. - Aktivitas deep link.
- Siapkan dan gunakan Google Analytics:
- Sertakan dependensi Google Analytics. Dependensi ini biasanya ditambahkan secara otomatis oleh plugin Gradle
google-services
. - Sertakan file konfigurasi
google-services.json
di aplikasi Anda. - Panggil
FirebaseAnalytics.getInstance()
sebelum memanggilFirebaseDynamicLinks.getDynamicLink()
.
Menangani Dynamic Links menggunakan App Links
Di Android 6.0 (API level 23) dan yang lebih baru, jika aplikasi Anda telah diinstal, Anda dapat menyiapkannya untuk menangani Dynamic Links secara langsung menggunakan Link Aplikasi Android.
Pastikan Anda telah menambahkan sidik jari sertifikat SHA256 untuk aplikasi Anda ke dalam project di Firebase console. Dynamic Links akan menangani penyiapan pengaitan situs App Links untuk domain Dynamic Links Anda.
Tambahkan filter intent yang terverifikasi otomatis ke Aktivitas yang akan menangani Dynamic Link, dengan menyetel host ke domain Dynamic Links project Anda yang terdapat di Firebase console. Di AndroidManifest.xml
:
<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:host="example.com/link" android:scheme="http"/> <data android:host="example.com/link" android:scheme="https"/> </intent-filter>
Perlu diperhatikan bahwa android:host
harus disetel ke domain Dynamic Links Anda, bukan domain dari deep link Anda.
Semua filter intent autoVerify
di manifes Anda harus terdaftar agar App Links berfungsi. Firebase menangani hal ini secara otomatis untuk domain Dynamic Links Anda, tetapi Anda dapat memeriksanya dengan membuka file assetlinks.json
yang dihosting di domain Dynamic Links tersebut:
https://YOUR_DOMAIN/.well-known/assetlinks.jsonSemua paket aplikasi Firebase Anda harus menyertakan nama.
Dynamic Links kini akan dikirim langsung ke aplikasi Anda. Anda akan bisa memperoleh deep link dan data Dynamic Link lainnya dengan memanggil getDynamicLink()
di Aktivitas yang telah ditambahi filter intent App Links (seperti yang dijelaskan di bagian Menangani deep link).
Catatan: Karena pemanggilan melalui App Links mengarahkan pengguna langsung ke aplikasi, Dynamic Link tidak dapat memenuhi versi minimum yang disyaratkan. Jadi, setelah aplikasi dibuka, Anda harus membandingkan versi minimum Dynamic Link ( getminimumappversion) dengan PackageInfo.versionCode dan, jika diperlukan, alihkan pengguna untuk mengupgrade aplikasi menggunakan getUpdateAppIntent.