Lihat yang baru dari Firebase di Google I/O 2022. Pelajari lebih lanjut

Terima Firebase Dynamic Links di aplikasi Flutter

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

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. 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 sedang mem-build aplikasi Android, buka halaman Project settings di Firebase console dan pastikan Anda telah menentukan kunci penandatanganan SHA-1. Jika Anda menggunakan Link Aplikasi, tentukan juga kunci SHA-256 Anda.

Integrasi platform

Selesaikan langkah-langkah integrasi platform berikut untuk platform tempat Anda membuat aplikasi.

Android

Di Android, Anda harus menambahkan tautan dalam penangkap filter maksud baru dari domain Anda, karena Tautan Dinamis akan dialihkan ke domain Anda jika aplikasi Anda terpasang. 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.

Langkah selanjutnya adalah memastikan sidik jari SHA-256 dari sertifikat penandatanganan terdaftar di konsol Firebase untuk aplikasi tersebut. Anda dapat menemukan detail selengkapnya tentang cara mengambil sidik jari SHA-256 di halaman Otentikasi Klien Anda .

Platform Apple

  1. Buat akun pengembang Apple jika Anda belum memilikinya.

  2. Di halaman Setelan proyek konsol Firebase, pastikan aplikasi iOS Anda dikonfigurasi dengan benar dengan ID App Store dan ID Tim Anda.

  3. Di situs Pengembang Apple, buat profil penyediaan untuk aplikasi Anda dengan mengaktifkan kemampuan Domain Terkait.

  4. Di Xcode, lakukan hal berikut:

    1. Buka aplikasi Anda di bawah tajuk TARGETS .

    2. Di halaman Penandatanganan & Kemampuan, pastikan Tim Anda terdaftar, dan Profil Penyediaan Anda sudah diatur.

    3. Pada halaman Penandatanganan & Kemampuan, aktifkan Domain Terkait dan tambahkan berikut ini ke daftar Domain Terkait (ganti contoh dengan domain Anda):

      applinks:example.page.link
      
    4. Di halaman Info, tambahkan Jenis URL ke proyek Anda. Setel kolom Skema URL ke ID bundel aplikasi Anda. (Identifier dapat berupa Bundle ID atau apa pun yang Anda inginkan.)

    5. Jika Anda telah menyiapkan domain khusus untuk proyek Firebase, tambahkan awalan URL Dynamic Link ke file Info.plist proyek iOS menggunakan kunci FirebaseDynamicLinksCustomDomains .

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
      <key>FirebaseDynamicLinksCustomDomains</key>
      <array>
          <string>https://custom.domain.io/path1</string>
          <string>https://custom.domain.io/path2</string>
      </array>
      
      ...other settings
      
      </dict>
      </plist>
      
    6. Opsional: Nonaktifkan penggunaan papan pengumuman iOS oleh Dynamic Links SDK.

      Secara default, Dynamic Links SDK menggunakan papan tulis untuk meningkatkan keandalan tautan dalam pascapemasangan. Dengan menggunakan papan tulis, Dynamic Links dapat memastikan bahwa saat pengguna membuka Dynamic Link tetapi perlu menginstal aplikasi Anda terlebih dahulu, pengguna dapat langsung membuka konten tertaut asli saat membuka aplikasi untuk pertama kali setelah penginstalan.

      Sisi negatifnya adalah penggunaan papan tulis memicu pemberitahuan di iOS 14 dan yang lebih baru. Jadi, saat pertama kali pengguna membuka aplikasi Anda, jika papan tulis berisi URL Tautan Dinamis, mereka akan melihat pemberitahuan bahwa aplikasi Anda telah mengakses papan tulis, yang dapat menyebabkan kebingungan.

      Untuk menonaktifkan perilaku ini, edit file Info.plist proyek Xcode Anda dan setel kunci FirebaseDeepLinkPasteboardRetrievalEnabled ke NO .

Untuk menangani Dynamic Link di aplikasi Anda, ada dua skenario yang perlu diterapkan.

Negara Dihentikan

Jika aplikasi dihentikan, metode FirebaseDynamicLinks.getInitialLink memungkinkan Anda mengambil Dynamic Link yang membuka aplikasi.

Ini adalah permintaan asinkron, jadi masuk akal untuk menangani tautan sebelum merender logika aplikasi, seperti navigator. Misalnya, Anda dapat menangani ini di fungsi main :

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);

  // Get any initial links
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  runApp(MyApp(initialLink));
}

Dalam logika aplikasi Anda, Anda kemudian dapat memeriksa apakah tautan telah ditangani dan melakukan tindakan, misalnya:

if (initialLink != null) {
  final Uri deepLink = initialLink.link;
  // Example of using the dynamic link to push the user to a different screen
  Navigator.pushNamed(context, deepLink.path);
}

Alternatifnya, jika Anda ingin mengidentifikasi apakah Dynamic Link yang tepat digunakan untuk membuka aplikasi, teruskan ke metode getDynamicLink :

String link = 'https://dynamic-link-domain/ke2Qa';

final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));

Latar Belakang / Foreground State

Saat aplikasi terbuka, atau di latar belakang, Anda dapat mendengarkan peristiwa Dynamic Links menggunakan pengendali aliran. Getter FirebaseDynamicLinks.onLink menampilkan Stream yang berisi PendingDynamicLinkData :

FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
  // Handle errors
});

Untuk menguji tautan dinamis di iOS, Anda harus menggunakan perangkat yang sebenarnya. Anda juga perlu menjalankan aplikasi dalam mode rilis (yaitu flutter run --release .), jika menguji tautan dinamis dari status aplikasi yang dihentikan (yaitu aplikasi telah ditutup.).