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.
Siapkan Firebase dan Dynamic Links SDK
Instal dan inisialisasi Firebase SDK untuk Flutter jika Anda belum melakukannya.
Dari direktori root proyek Flutter Anda, jalankan perintah berikut untuk menginstal plugin Dynamic Links:
flutter pub add firebase_dynamic_links
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
Buat akun pengembang Apple jika Anda belum memilikinya.
Di halaman Setelan proyek di Firebase console, pastikan aplikasi iOS Anda dikonfigurasi dengan benar dengan ID App Store dan ID Tim Anda.
Di situs Pengembang Apple, buat profil penyediaan untuk aplikasi Anda dengan kemampuan Domain Terkait diaktifkan.
Di Xcode, lakukan hal berikut:
Buka aplikasi Anda di bawah tajuk TARGETS .
Pada halaman Penandatanganan & Kemampuan, pastikan Tim Anda terdaftar, dan Profil Penyedia Anda telah diatur.
Tambahkan domain yang Anda buat di Firebase console ke Associated Domains, yang diawali dengan
applinks:
(misalnya,applinks:example.page.link
).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.)Jika Anda telah menyiapkan domain khusus untuk proyek Firebase Anda, tambahkan awalan URL Tautan Dinamis ke dalam file
Info.plist
proyek iOS Anda menggunakan kunciFirebaseDynamicLinksCustomDomains
.<?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>
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 kunciFirebaseDeepLinkPasteboardRetrievalEnabled
keNO
.
Menangani tautan dalam
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
});