Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Terima Tautan Dinamis Firebase di Android

Untuk menerima Firebase Dynamic Links yang Anda buat , Anda harus menyertakan Dynamic Links SDK di aplikasi Anda dan memanggil metode FirebaseDynamicLinks.getDynamicLink() saat aplikasi Anda dimuat untuk mendapatkan data yang diteruskan di Dynamic Link.

  1. Jika Anda belum melakukannya, tambahkan Firebase ke proyek Android Anda .

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

  2. Dalam file Gradle modul (level aplikasi) Anda (biasanya <project>/<app-module>/build.gradle ), tambahkan dependensi untuk library Android Dynamic Links. Kami merekomendasikan penggunaan Firebase Android BoM untuk mengontrol pembuatan versi library.

    Untuk pengalaman optimal dengan Dynamic Links, sebaiknya aktifkan Google Analytics di project Firebase Anda dan tambahkan Firebase SDK untuk Google Analytics ke aplikasi Anda.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // 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 pustaka Android Firebase yang kompatibel.

    (Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM

    Jika Anda memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi pustaka Firebase di baris dependensinya.

    Perhatikan bahwa jika Anda menggunakan beberapa pustaka Firebase di aplikasi Anda, kami sangat menyarankan penggunaan BoM untuk mengelola versi pustaka, 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.2.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // 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 pustaka Android Firebase yang kompatibel.

    (Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM

    Jika Anda memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi pustaka Firebase di baris dependensinya.

    Perhatikan bahwa jika Anda menggunakan beberapa pustaka Firebase di aplikasi Anda, kami sangat menyarankan penggunaan BoM untuk mengelola versi pustaka, 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.2.0'
    }
    
  3. Di konsol Firebase , buka bagian Tautan Dinamis . Terima persyaratan layanan jika Anda diminta untuk melakukannya.

Seperti tautan dalam biasa , Anda harus menambahkan filter maksud baru ke aktivitas yang menangani tautan dalam untuk aplikasi Anda. Filter maksud harus menangkap tautan dalam domain Anda, karena Tautan Dinamis akan dialihkan ke domain Anda jika aplikasi Anda dipasang. Ini diperlukan agar aplikasi Anda menerima data Tautan Dinamis setelah diinstal/diperbarui dari Play Store dan ketuk 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>

Saat 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 menerima tautan dalam, 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: 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 tautan, meskipun tautan tersebut mungkin tersedia dari maksud menggunakan getIntent().getData() . Memanggil getDynamicLink() akan mengambil tautan dan menghapus data tersebut sehingga hanya diproses satu kali oleh aplikasi Anda.

Anda biasanya memanggil getDynamicLink() di aktivitas utama serta aktivitas apa pun yang diluncurkan oleh filter maksud yang cocok dengan tautan.

Rekam analitik

Peristiwa berikut dapat dilacak secara otomatis di Google Analytics dan ditampilkan di konsol Firebase.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Untuk mendaftarkan peristiwa ini, Anda perlu mengonfigurasi Google Analytics sebelum mengambil tautan dalam. Periksa kondisi berikut terpenuhi:

  • Panggil FirebaseDynamicLinks.getDynamicLink() di titik masuk aplikasi Anda:
    • Kegiatan peluncur. misalnya: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Titik masuk aktivitas. misalnya: onStart() , onCreate() .
    • Aktivitas tautan dalam.
  • Siapkan dan gunakan Google Analytics:
    • Sertakan ketergantungan Google Analytics. Ini biasanya ditambahkan secara otomatis oleh plugin google-services Gradle.
    • 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 saat aplikasi sudah diinstal menggunakan Android App Links .

Pastikan Anda telah menambahkan sidik jari sertifikat SHA256 untuk aplikasi Anda ke proyek Anda di konsol Firebase . Dynamic Links akan menangani penyiapan asosiasi situs web App Links untuk domain Dynamic Links Anda.

Tambahkan filter maksud yang diverifikasi otomatis ke Aktivitas yang akan menangani Tautan Dinamis, menyetel host ke domain Tautan Dinamis proyek Anda seperti yang ditemukan di konsol Firebase . 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>

Perhatikan bahwa android:host harus disetel ke domain Dynamic Links Anda, dan bukan domain tautan dalam Anda.

Semua filter intent autoVerify di manifes Anda harus didaftarkan agar Link Aplikasi dapat terlibat. Firebase menangani ini secara otomatis untuk domain Dynamic Links Anda, tetapi Anda dapat memeriksanya dengan membuka file assetlinks.json yang dihosting di domain Dynamic Links Anda:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Semua nama paket aplikasi Firebase Anda harus disertakan.

Tautan Dinamis sekarang akan dikirim langsung ke aplikasi Anda. Anda akan bisa mendapatkan tautan dalam dan data Tautan Dinamis lainnya dengan memanggil getDynamicLink() dalam Aktivitas tempat Anda menambahkan filter maksud Tautan Aplikasi (seperti yang dijelaskan dalam Menangani tautan dalam ).

Catatan: Karena pemanggilan melalui App Links membawa pengguna langsung ke aplikasi, Dynamic Link tidak dapat mematuhi versi minimum yang diperlukan. Jadi setelah aplikasi dibuka, Anda perlu membandingkan versi minimum Tautan Dinamis ( getminimumappversion ) dengan PackageInfo.versionCode dan mengarahkan ulang pengguna untuk memutakhirkan aplikasi jika diperlukan menggunakan getUpdateAppIntent .