Membuat Dynamic Links di aplikasi Flutter

Anda dapat membuat Dynamic Link pendek atau panjang dengan Firebase Dynamic Links Builder API. API ini menerima Dynamic Link panjang atau objek yang berisi parameter Dynamic Link, serta menampilkan URL seperti dalam contoh berikut ini:

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

Sebelum dapat membuat Dynamic Link di aplikasi Android, Anda harus menyertakan Firebase SDK. Jika aplikasi Anda sudah disiapkan untuk menerima Dynamic Link, berarti Anda telah menyelesaikan langkah-langkah ini dan dapat mengabaikan bagian ini.

  1. Instal dan inisialisasi Firebase SDK untuk Flutter jika Anda belum melakukannya.

  2. Dari direktori root project Flutter Anda, jalankan perintah berikut untuk menginstal plugin Dynamic Links:

    flutter pub add firebase_dynamic_links
    
  3. Jika Anda mem-build aplikasi Android, buka halaman Setelan project di Firebase console dan pastikan Anda telah menentukan kunci penandatanganan SHA-1. Jika Anda menggunakan App Links, tentukan juga kunci SHA-256 Anda.

  4. Di Firebase console, buka bagian Dynamic Links.

    1. Jika Anda belum menyiapkan domain untuk Dynamic Links, klik tombol Mulai lalu ikuti petunjuknya.

      Jika Anda sudah memiliki domain Dynamic Link, catatlah. Anda harus menyediakan domain Dynamic Link ketika membuat Dynamic Link secara terprogram.

    2. Direkomendasikan: Dari menu "Lainnya" (⋮), tentukan pola URL yang diizinkan di deep link dan link fallback. Dengan begitu, pihak yang tidak diberi otorisasi tidak dapat membuat Dynamic Link yang mengalihkan pengguna dari domain Anda ke situs yang tidak Anda kontrol.

      Baca artikel Mengizinkan pola URL tertentu.

Untuk membuat Dynamic Link, buat objek DynamicLinkParameters baru dan teruskan ke buildLink() atau buildShortLink().

Contoh minimal berikut membuat Dynamic Link panjang ke https://www.example.com/ yang terbuka dengan com.example.app.android di Android serta aplikasi com.example.app.ios di iOS:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);

Untuk membuat Dynamic Link pendek, teruskan objek DynamicLinkParameters ke buildShortLink(). Diperlukan panggilan jaringan untuk membuat link pendek. Contoh:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

Secara default, Dynamic Link pendek dihasilkan dengan akhiran yang panjangnya hanya beberapa karakter. Meskipun link jadi lebih ringkas, seseorang masih dapat menebak link pendek yang valid. Sering kali tidak ada risikonya jika seseorang dapat melakukannya, karena link tersebut mengarah ke informasi publik.

Namun, jika link singkat Anda menghasilkan informasi khusus pengguna, Anda harus membuat link yang lebih panjang dengan akhiran 17 karakter, sehingga tidak ada yang bisa menebak Dynamic Link yang valid. Untuk melakukannya, teruskan ShortDynamicLinkType.unguessable ke metode buildShortLink():

final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
    dynamicLinkParams,
    shortLinkType: ShortDynamicLinkType.unguessable,
);

Anda dapat menggunakan Dynamic Link Builder API untuk membuat Dynamic Link dengan parameter apa pun yang didukung. Lihat referensi API.

Contoh berikut membuat Dynamic Link dengan penetapan beberapa parameter umum:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(
    packageName: "com.example.app.android",
    minimumVersion: 30,
  ),
  iosParameters: const IOSParameters(
    bundleId: "com.example.app.ios",
    appStoreId: "123456789",
    minimumVersion: "1.0.1",
  ),
  googleAnalyticsParameters: const GoogleAnalyticsParameters(
    source: "twitter",
    medium: "social",
    campaign: "example-promo",
  ),
  socialMetaTagParameters: SocialMetaTagParameters(
    title: "Example of a Dynamic Link",
    imageUrl: Uri.parse("https://example.com/image.png"),
  ),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

Anda dapat menetapkan parameter Dynamic Link dengan metode berikut:

Parameter DynamicLink
setLink Link yang dibuka aplikasi Anda. Tentukan URL yang dapat ditangani aplikasi Anda, biasanya konten atau payload aplikasi, yang memulai logika khusus aplikasi (seperti memberikan kupon kepada pengguna atau menampilkan layar sambutan). Link ini harus berupa URL yang diformat dengan baik, dienkode URL dengan benar, menggunakan HTTP atau HTTPS, dan bukan merupakan Dynamic Link lain.
setDomainUriPrefix Awalan URL Dynamic Link Anda yang dapat ditemukan di Firebase console. Domain Dynamic Link akan tampak seperti contoh berikut:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl Link untuk dibuka jika aplikasi belum diinstal. Tentukan parameter ini untuk melakukan sesuatu selain menginstal aplikasi Anda dari Play Store jika aplikasi belum diinstal, seperti membuka konten versi web seluler atau menampilkan halaman promosi untuk aplikasi Anda.
setMinimumVersion versionCode dari versi minimum aplikasi Anda yang dapat membuka link. Jika aplikasi yang terinstal adalah versi yang lebih lama, pengguna akan diarahkan ke Play Store untuk mengupgrade aplikasi tersebut.
IosParameters
setAppStoreId ID App Store aplikasi Anda yang digunakan untuk mengirim pengguna ke App Store jika aplikasi belum diinstal.
setFallbackUrl Link untuk dibuka jika aplikasi belum diinstal. Tentukan parameter ini untuk melakukan sesuatu selain menginstal aplikasi Anda dari App Store jika aplikasi belum diinstal, seperti membuka konten versi web seluler atau menampilkan halaman promosi untuk aplikasi Anda.
setCustomScheme Skema URL kustom aplikasi Anda, jika ditentukan sebagai sesuatu selain ID paket aplikasi.
setIpadFallbackUrl Link untuk dibuka di iPad jika aplikasi belum diinstal. Tentukan parameter ini untuk melakukan sesuatu selain menginstal aplikasi Anda dari App Store jika aplikasi belum diinstal, seperti membuka konten versi web atau menampilkan halaman promosi untuk aplikasi Anda.
setIpadBundleId ID paket aplikasi iOS yang digunakan di iPad untuk membuka link. Aplikasi tersebut harus terhubung ke project Anda dari halaman Overview di Firebase console.
setMinimumVersion Nomor versi dari versi minimum aplikasi Anda yang dapat membuka link. Flag ini diteruskan ke aplikasi saat aplikasi dibuka, dan aplikasi harus menentukan tindakan untuk flag tersebut.
NavigationInfoParameters
setForcedRedirectEnabled Jika disetel ke '1', halaman pratinjau aplikasi akan diabaikan saat Dynamic Link dibuka dan pengguna akan dialihkan ke aplikasi atau toko. Halaman pratinjau aplikasi (secara default diaktifkan) dapat lebih andal dalam mengarahkan pengguna ke tujuan yang paling sesuai saat mereka membuka Dynamic Link di aplikasi. Namun, jika Anda ingin Dynamic Link hanya dibuka di aplikasi yang dapat membuka Dynamic Link dengan andal tanpa halaman ini, Anda dapat menonaktifkannya dengan parameter ini. Parameter ini hanya akan memengaruhi perilaku Dynamic Link di iOS.
SocialMetaTagParameters
setTitle Judul yang digunakan ketika Dynamic Link dibagikan di postingan media sosial.
setDescription Deskripsi yang digunakan ketika Dynamic Link dibagikan di postingan media sosial.
setImageUrl URL ke gambar yang terkait link ini. Gambar harus berukuran minimal 300x200 px, dan kurang dari 300 KB.
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Parameter analisis Google Play. Parameter (`utm_source`, `utm_medium`, utm_campaign`, `utm_term`, `utm_content`) ini diteruskan ke Play Store dan juga ditambahkan ke payload link.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
Parameter analisis iTunes Connect. Parameter (`pt`, `at`, `ct`) ini diteruskan ke App Store.