Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menerima Firebase Dynamic Links di Android

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.

  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. Dalam file build.gradle level project, pastikan Anda memasukkan repositori Maven Google di bagian buildscript dan allprojects.
  3. Tambahkan dependensi untuk library Android Dynamic Links ke file Gradle modul (level aplikasi) Anda (biasanya app/build.gradle).

    Untuk mendapatkan pengalaman yang optimal saat menggunakan Dynamic Links, sebaiknya aktifkan Google Analytics di project Anda. Selain itu, sebagai bagian dari penyiapan Analytics, Anda perlu menambahkan Firebase SDK untuk Analytics ke aplikasi Anda.

    Java

    implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
    implementation 'com.google.firebase:firebase-analytics:17.5.0'

    Kotlin+KTX

    implementation 'com.google.firebase:firebase-dynamic-links-ktx:19.1.0'
    implementation 'com.google.firebase:firebase-analytics-ktx:17.5.0'
  4. Di Firebase console, buka bagian Dynamic Links. Setujui persyaratan layanan jika diminta.

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 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+KTX

Firebase.dynamicLinks
        .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 mungkin tersedia dari intent yang menggunakan getIntent().getData(). Jika getDynamicLink() dipanggil, link akan diambil dan data akan dihapus, sehingga aplikasi Anda hanya akan memprosesnya satu kali.

Anda biasanya memanggil getDynamicLink() 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. 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 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, 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 disertakan.

Dynamic Link 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 ditambahkan filter intent App Links ke dalamnya (seperti yang dijelaskan di bagian Menangani deep link).