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

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 Firebase SDK 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 Anda. 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 Dynamic Link akan dialihkan ke domain Anda jika aplikasi Anda diinstal. 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. Pada halaman Penandatanganan & Kemampuan, aktifkan Domain Terkait dan tambahkan yang berikut ini ke daftar Domain Terkait:

      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 Links 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, 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
});

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 digesek ditutup.).