Buka konsol

Menerima Firebase Dynamic Links di Android

English Context Link

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

  1. Tambahkan Firebase ke project Android jika Anda belum melakukannya.

    Saat mendaftarkan aplikasi, tentukan kunci penandatanganan SHA-1 Anda. Jika menggunakan App Links, tentukan juga kunci SHA-256 Anda.

  2. Pada file build.gradle level project, pastikan untuk menyertakan repositori Maven Google di bagian buildscript dan allprojects Anda.
  3. Tambahkan dependensi untuk library Android Firebase Dynamic Links ke file Gradle modul (level aplikasi) Anda (biasanya berupa app/build.gradle):
    implementation 'com.google.firebase:firebase-dynamic-links:17.0.0'
  4. 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 ke aktivitas yang menangani deep link untuk aplikasi Anda. Filter intent harus menangkap deep link domain Anda karena Dynamic Link akan mengalihkan ke domain Anda jika aplikasi Anda terinstal. Hal ini diperlukan agar aplikasi Anda dapat menerima data Dynamic Link setelah diinstal/diupdate dari Play Store dan pengguna menge-tap tombol Lanjutkan. 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.

Untuk mendapatkan deep link, panggil metode getDynamicLink():

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);
            }
        });

Kotlin

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { 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) }

Anda harus memanggil getDynamicLink() di setiap aktivitas yang mungkin diluncurkan oleh link tersebut, meskipun link ini kemungkinan tersedia dari intent yang menggunakan getIntent().getData(). Memanggil getDynamicLink() akan mengambil link dan membersihkan data sehingga hanya akan diproses satu kali oleh aplikasi Anda.

Anda biasanya memanggil getDynamicLink() di aktivitas utama serta aktivitas apa pun yang diluncurkan oleh filter intent yang cocok dengan link tersebut.

Mencatat analytics

Peristiwa berikut dapat dilacak secara otomatis di Google Analytics for Firebase 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 for Firebase sebelum mengambil deep link. Pastikan kondisi berikut terpenuhi:

  • Panggil FirebaseDynamicLinks.getDynamicLink() di titik masuk aplikasi Anda:
    • Aktivitas peluncur, misalnya: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER".
    • Titik masuk aktivitas. Misalnya: onStart(), onCreate().
    • Aktivitas deep link.
  • Siapkan dan gunakan Google Analytics for Firebase:
    • Sertakan dependensi Google Analytics for Firebase. Hal ini biasanya ditambahkan secara otomatis oleh plugin Gradle google-services.
    • Sertakan file konfigurasi google-services.json di aplikasi Anda.
    • Panggil FirebaseAnalytics.getInstance() sebelum memanggil FirebaseDynamicLinks.getDynamicLink().

Di Android 6.0 (API level 23) dan yang lebih tinggi, Anda dapat menyiapkan aplikasi untuk menangani Dynamic Links secara langsung ketika aplikasi tersebut telah diinstal menggunakan Android App Links.

Pastikan Anda telah menambahkan sidik jari sertifikat SHA256 ke dalam project Anda 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, sehingga akan menyetel host untuk domain Dynamic Links project Anda seperti 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.json
Semua nama paket aplikasi Firebase Anda harus dimasukkan.

Dynamic Links kini akan dikirim langsung ke aplikasi Anda. Anda akan bisa mendapatkan deep link dan data Dynamic Link lainnya dengan memanggil getDynamicLink() dalam Aktivitas yang telah ditambahkan filter intent App Links ke dalamnya (seperti yang dijelaskan di bagian Menangani deep link).