Terima Firebase Dynamic Links di aplikasi Flutter

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 SDK Firebase untuk Flutter jika Anda belum melakukannya.

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

    flutter pub add firebase_dynamic_links
    
  3. Jika Anda membuat aplikasi Android, buka halaman Setelan proyek di Firebase console dan pastikan Anda telah menentukan kunci penandatanganan SHA-1. Jika Anda menggunakan Tautan 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 filter maksud baru untuk 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.

Platform Apple

  1. Buat akun pengembang Apple jika Anda belum memilikinya.

  2. Di halaman Setelan proyek di Firebase console, 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 kemampuan Domain Terkait diaktifkan.

  4. Di Xcode, lakukan hal berikut:

    1. Buka aplikasi Anda di bawah tajuk TARGETS .

    2. Pada halaman Penandatanganan & Kemampuan, pastikan Tim Anda terdaftar, dan Profil Penyedia Anda telah diatur.

    3. Tambahkan domain yang Anda buat di Firebase console ke Associated Domains, yang diawali dengan applinks: (misalnya, applinks:example.page.link ).

    4. Pada halaman Info, tambahkan Jenis URL ke proyek Anda. Setel bidang 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 Anda, tambahkan awalan URL Tautan Dinamis ke dalam file Info.plist proyek iOS Anda 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 Dynamic Links SDK atas papan tulis iOS.

      Secara default, Dynamic Links SDK menggunakan pasteboard untuk meningkatkan keandalan tautan dalam pasca pemasangan. Dengan menggunakan pasteboard, Dynamic Links dapat memastikan bahwa ketika 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.

      Kelemahan dari ini adalah penggunaan papan tempel memicu pemberitahuan di iOS 14 dan yang lebih baru. Jadi, saat pertama kali pengguna membuka aplikasi Anda, jika pasteboard berisi URL Dynamic Link, mereka akan melihat pemberitahuan bahwa aplikasi Anda mengakses pasteboard, 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, dua skenario memerlukan penerapan.

Negara yang 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 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);
}

Atau, jika Anda ingin mengidentifikasi apakah Tautan Dinamis yang tepat digunakan untuk membuka aplikasi, teruskan ke metode getDynamicLink sebagai gantinya:

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

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

Latar Belakang / Keadaan Latar Depan

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

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