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

Buat Tautan Dinamis di Android

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat membuat Dynamic Links pendek atau panjang dengan Firebase Dynamic Links Builder API. API ini menerima Tautan Dinamis panjang atau objek yang berisi parameter Tautan Dinamis, dan mengembalikan URL seperti contoh berikut:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Sebelum dapat membuat Dynamic Links di aplikasi Android, Anda harus menyertakan Firebase SDK. Jika aplikasi Anda disiapkan untuk menerima Tautan Dinamis, Anda telah menyelesaikan langkah-langkah ini dan Anda dapat melewati bagian ini.

  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.

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.2.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'
    }
    

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.2.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'
    }
    
  3. Di konsol Firebase, buka bagian Tautan Dinamis .
  4. Jika Anda belum menyetujui persyaratan layanan dan menetapkan domain untuk Dynamic Links, lakukan saat diminta.

    Jika Anda sudah memiliki domain Dynamic Links, catatlah. Anda harus menyediakan domain Dynamic Links saat membuat Dynamic Links secara terprogram.

  5. Direkomendasikan : Tentukan pola URL yang diizinkan di tautan dalam dan tautan cadangan Anda. Dengan melakukannya, Anda mencegah pihak yang tidak berwenang membuat Tautan Dinamis yang mengalihkan dari domain Anda ke situs yang tidak Anda kontrol. Lihat Mengizinkan pola URL tertentu .

Gunakan konsol Firebase

Jika Anda ingin membuat satu Tautan Dinamis, baik untuk tujuan pengujian, atau untuk tim pemasaran agar mudah membuat tautan yang dapat digunakan dalam sesuatu seperti postingan media sosial, cara paling sederhana adalah dengan mengunjungi konsol Firebase dan membuatnya secara manual mengikuti formulir langkah demi langkah.

Untuk membuat Dynamic Link, buat objek DynamicLink baru dengan Builder-nya, dengan menentukan parameter Dynamic Link dengan metode Builder. Kemudian, panggil buildDynamicLink atau buildShortDynamicLink .

Contoh minimal berikut membuat Tautan Dinamis panjang ke https://www.example.com/ yang terbuka dengan aplikasi Android Anda di Android dan aplikasi com.example.ios di iOS:

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Open links with this app on Android
    androidParameters { }
    // Open links with com.example.ios on iOS
    iosParameters("com.example.ios") { }
}

val dynamicLinkUri = dynamicLink.uri

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink();

Uri dynamicLinkUri = dynamicLink.getUri();

Untuk membuat Dynamic Link singkat, buat DynamicLink dengan cara yang sama, lalu panggil buildShortDynamicLink . Membuat tautan pendek memerlukan panggilan jaringan, jadi alih-alih mengembalikan tautan secara langsung, buildShortDynamicLink mengembalikan Task , yang membuat tautan pendek tersedia saat permintaan selesai. Sebagai contoh:

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { (shortLink, flowchartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowchartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

Secara default, Tautan Dinamis pendek dibuat dengan akhiran tautan 17 karakter yang membuatnya sangat tidak mungkin seseorang dapat menebak Tautan Dinamis yang valid. Jika, untuk kasus penggunaan Anda, tidak ada salahnya seseorang berhasil menebak tautan pendek, Anda mungkin lebih suka membuat sufiks yang hanya selama diperlukan untuk menjadi unik, yang dapat Anda lakukan dengan meneruskan ShortDynamicLink.Suffix.SHORT ke metode buildShortDynamicLink :

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

Anda dapat menggunakan Dynamic Link Builder API untuk membuat Dynamic Links dengan salah satu parameter yang didukung. Lihat referensi API untuk detailnya.

Contoh berikut membuat Dynamic Link dengan beberapa kumpulan parameter umum:

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    androidParameters("com.example.android") {
        minimumVersion = 125
    }
    iosParameters("com.example.ios") {
        appStoreId = "123456789"
        minimumVersion = "1.0.1"
    }
    googleAnalyticsParameters {
        source = "orkut"
        medium = "social"
        campaign = "example-promo"
    }
    itunesConnectAnalyticsParameters {
        providerToken = "123456"
        campaignToken = "example-promo"
    }
    socialMetaTagParameters {
        title = "Example of a Dynamic Link"
        description = "This link works whether the app is installed or not!"
    }
}

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                new DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                new DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                new DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink();  // Or buildShortDynamicLink()

Anda dapat menyetel parameter Tautan Dinamis dengan metode berikut:

Parameter DynamicLink
setLink

Tautan yang akan dibuka aplikasi Anda. Tentukan URL yang dapat ditangani aplikasi Anda, biasanya konten atau payload aplikasi, yang memulai logika khusus aplikasi (seperti mengkredit pengguna dengan kupon atau menampilkan layar selamat datang). Tautan ini harus berupa URL dengan format yang baik, berenkode URL dengan benar, menggunakan HTTP atau HTTPS, dan tidak boleh berupa Tautan Dinamis lainnya.

setDomainUriPrefix Awalan URL Dynamic Link Anda, yang dapat Anda temukan di konsol Firebase. Domain Dynamic Link terlihat seperti contoh berikut:
https://example.com/link
https://example.page.link
Parameter Android
setFallbackUrl Tautan untuk membuka saat aplikasi tidak terpasang. Tetapkan ini untuk melakukan sesuatu selain menginstal aplikasi Anda dari Play Store saat aplikasi tidak diinstal, seperti membuka konten versi web seluler, atau menampilkan halaman promosi untuk aplikasi Anda.
setMinimumVersion versionCode dari versi minimum aplikasi Anda yang dapat membuka tautan. Jika aplikasi yang diinstal adalah versi yang lebih lama, pengguna akan dibawa ke Play Store untuk memutakhirkan aplikasi.
IosParameters
setAppStoreId ID App Store aplikasi Anda, yang digunakan untuk mengirim pengguna ke App Store saat aplikasi belum diinstal
setFallbackUrl Tautan untuk membuka saat aplikasi tidak terpasang. Tetapkan ini untuk melakukan sesuatu selain menginstal aplikasi Anda dari App Store saat aplikasi tidak diinstal, seperti membuka konten versi web seluler, atau menampilkan halaman promosi untuk aplikasi Anda.
setCustomScheme Skema URL khusus aplikasi Anda, jika ditentukan sebagai sesuatu selain ID bundel aplikasi Anda
setIpadFallbackUrl Tautan untuk membuka di iPad saat aplikasi tidak dipasang. Tetapkan ini untuk melakukan sesuatu selain menginstal aplikasi Anda dari App Store saat aplikasi tidak diinstal, seperti membuka konten versi web, atau menampilkan halaman promosi untuk aplikasi Anda.
setIpadBundleId ID paket aplikasi iOS yang akan digunakan di iPad untuk membuka tautan. Aplikasi harus terhubung ke proyek Anda dari halaman Ikhtisar konsol Firebase.
setMinimumVersion Nomor versi versi minimum aplikasi Anda yang dapat membuka tautan. Bendera ini diteruskan ke aplikasi Anda saat dibuka, dan aplikasi Anda harus memutuskan apa yang harus dilakukan dengannya.
NavigationInfoParameters
setForcedRedirectEnabled Jika disetel ke '1', lewati halaman pratinjau aplikasi saat Dynamic Link dibuka, alih-alih alihkan ke aplikasi atau toko. Halaman pratinjau aplikasi (diaktifkan secara default) dapat mengarahkan pengguna ke tujuan yang paling tepat dengan lebih andal saat mereka membuka Dynamic Links di aplikasi; namun, jika Anda mengharapkan Tautan Dinamis hanya dibuka di aplikasi yang dapat membuka Tautan Dinamis dengan andal tanpa laman ini, Anda dapat menonaktifkannya dengan parameter ini. Parameter ini hanya akan memengaruhi perilaku Dynamic Link di iOS.
SocialMetaTagParameters
setTitle Judul yang akan digunakan saat Dynamic Link dibagikan di postingan sosial.
setDescription Deskripsi yang akan digunakan saat Dynamic Link dibagikan di postingan sosial.
setImageUrl URL ke gambar yang terkait dengan link ini. Gambar harus berukuran minimal 300x200 px, dan kurang dari 300 KB.
Parameter Google Analytics
setSource
setMedium
setCampaign
setTerm
setContent
Parameter analitik Google Play. Parameter ini ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) diteruskan ke Play Store serta ditambahkan ke payload tautan.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
Parameter analitik iTunes Connect. Parameter ini ( pt , at , ct ) diteruskan ke App Store.

Untuk mempersingkat Dynamic Link yang panjang, tetapkan URL Dynamic Link menggunakan setLongLink daripada menyetel parameter dengan metode pembuat lainnya:

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    longLink = Uri.parse("https://example.page.link/?link=" +
            "https://www.example.com/&apn=com.example.android&ibn=com.example.ios")
}.addOnSuccessListener { (shortLink, flowChartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowChartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });