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 Tautan Aplikasi, tentukan juga kunci SHA-256 Anda.

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

    Untuk pengalaman yang optimal dengan Dynamic Links, sebaiknya aktifkan Google Analytics di proyek 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 library Firebase Android 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 library Firebase Android 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 Firebase console , buka bagian Dynamic Links . 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 Dynamic Link setelah diinstal/diperbarui dari Play Store dan satu ketukan pada 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 Tautan Dinamis dengan tautan dalam ke skema dan host yang Anda tentukan, aplikasi Anda akan memulai aktivitas dengan filter maksud ini untuk menangani tautan.

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 mungkin tersedia dari maksud menggunakan getIntent().getData() . Memanggil getDynamicLink() akan mengambil tautan dan menghapus data tersebut sehingga hanya diproses sekali oleh aplikasi Anda.

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

Rekam analitik

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 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 Gradle google-services google.
    • 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 dengan menggunakan Android App Links .

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

Tambahkan filter maksud terverifikasi otomatis ke Aktivitas yang akan menangani Dynamic Link, menyetel host ke domain Dynamic Links proyek Anda seperti yang ditemukan 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>

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

Semua filter maksud autoVerify dalam manifes Anda harus didaftarkan agar Tautan 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() di Aktivitas yang Anda tambahkan filter maksud Tautan Aplikasi (seperti yang dijelaskan dalam Menangani tautan dalam ).

Catatan: Karena memanggil melalui Tautan Aplikasi membawa pengguna langsung ke aplikasi, Tautan Dinamis tidak dapat memenuhi versi minimum yang diperlukan. Jadi setelah aplikasi dibuka, Anda perlu membandingkan versi minimum Dynamic Link ( getminimumappversion ) dengan PackageInfo.versionCode dan mengarahkan pengguna untuk meningkatkan versi aplikasi jika diperlukan menggunakan getUpdateAppIntent .