Untuk menerima Firebase Dynamic Links yang Anda buat , Anda harus menyertakan Dynamic Links SDK di aplikasi Anda dan memanggil metode handleUniversalLink:
dan dynamicLinkFromCustomSchemeURL:
saat aplikasi Anda dimuat untuk mendapatkan data yang diteruskan di Dynamic Link.
Prasyarat
Sebelum memulai, pastikan untuk menambahkan Firebase ke proyek iOS Anda .
Siapkan Firebase dan Dynamic Links SDK
Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.
- Di Xcode, dengan proyek aplikasi Anda terbuka, arahkan ke File > Add Packages .
- Saat diminta, tambahkan repositori SDK platform Apple Firebase:
- Pilih pustaka Tautan Dinamis.
- Untuk pengalaman optimal dengan Dynamic Links, sebaiknya aktifkan Google Analytics di project Firebase Anda dan tambahkan Firebase SDK untuk Google Analytics ke aplikasi Anda. Anda dapat memilih perpustakaan tanpa koleksi IDFA atau dengan koleksi IDFA.
- Setelah selesai, Xcode akan secara otomatis mulai menyelesaikan dan mengunduh dependensi Anda di latar belakang.
https://github.com/firebase/firebase-ios-sdk
Sekarang, lakukan beberapa langkah konfigurasi:
- Di konsol Firebase , buka bagian Tautan Dinamis . Terima persyaratan layanan jika Anda diminta untuk melakukannya.
Pastikan ID App Store aplikasi dan awalan ID Aplikasi Anda ditentukan di setelan aplikasi. Untuk melihat dan mengedit setelan aplikasi Anda, buka halaman Setelan project Firebase Anda dan pilih aplikasi iOS Anda.
Anda dapat mengonfirmasi bahwa project Firebase Anda telah dikonfigurasi dengan benar untuk menggunakan Dynamic Links di aplikasi iOS dengan membuka URL berikut:
https://your_dynamic_links_domain/apple-app-site-association
Jika aplikasi Anda terhubung, file
apple-app-site-association
berisi referensi ke awalan ID Aplikasi dan ID bundel aplikasi Anda. Sebagai contoh:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
Jika bidang
details
kosong, periksa kembali apakah Anda telah menentukan awalan ID Aplikasi. Perhatikan bahwa awalan ID Aplikasi Anda mungkin tidak sama dengan ID Tim Anda.Opsional : Nonaktifkan penggunaan papan pengumuman iOS oleh Dynamic Links SDK.
Secara default, Dynamic Links SDK menggunakan pasteboard untuk meningkatkan keandalan deep link pasca-pemasangan. 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, 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 kunciFirebaseDeepLinkPasteboardRetrievalEnabled
keNO
.
Buka Dynamic Links di aplikasi Anda
- Di tab Info project Xcode aplikasi Anda, buat jenis URL baru yang akan digunakan untuk Dynamic Links. Setel bidang Pengenal ke nilai unik dan bidang skema URL menjadi pengenal bundel Anda, yang merupakan skema URL default yang digunakan oleh Dynamic Links.
- Di tab Kemampuan proyek Xcode aplikasi Anda, aktifkan Associated Domains dan tambahkan berikut ini ke daftar Associated Domains :
applinks:your_dynamic_links_domain
- Jika Anda ingin menerima Tautan Dinamis dengan domain yang sepenuhnya khusus , dalam file
Info.plist
proyek Xcode Anda, buat kunci bernamaFirebaseDynamicLinksCustomDomains
dan setel ke awalan URL Tautan Dinamis aplikasi Anda. Misalnya:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Impor modul
FirebaseCore
diUIApplicationDelegate
Anda, serta modul Firebase lainnya yang digunakan oleh delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Cepat
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurasikan instance bersama
FirebaseApp
dalam metodeapplication(_:didFinishLaunchingWithOptions:)
delegasi aplikasi Anda:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Cepat
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Jika Anda menggunakan SwiftUI, Anda harus membuat delegasi aplikasi dan melampirkannya ke struktur
App
Anda melaluiUIApplicationDelegateAdaptor
atauNSApplicationDelegateAdaptor
. Anda juga harus menonaktifkan swizzling delegasi aplikasi. Untuk informasi selengkapnya, lihat petunjuk SwiftUI .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Selanjutnya, dalam metode
application:continueUserActivity:restorationHandler:
:, tangani tautan yang diterima sebagai Tautan Universal saat aplikasi sudah diinstal:Cepat
Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
Objective-C
Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; }
- Terakhir, di
application:openURL:options:
tangani tautan yang diterima melalui skema URL khusus aplikasi Anda. Metode ini dipanggil saat aplikasi Anda dibuka untuk pertama kali setelah penginstalan.Jika Dynamic Link tidak ditemukan pada peluncuran pertama aplikasi Anda, metode ini akan dipanggil dengan
url
DynamicLink
disetel kenil
, yang menunjukkan bahwa SDK gagal menemukan Dynamic Link pencocokan yang tertunda.Cepat
Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
Objective-C
Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }
Untuk menerima Firebase Dynamic Links yang Anda buat , Anda harus menyertakan Dynamic Links SDK di aplikasi Anda dan memanggil metode handleUniversalLink:
dan dynamicLinkFromCustomSchemeURL:
saat aplikasi Anda dimuat untuk mendapatkan data yang diteruskan di Dynamic Link.
Prasyarat
Sebelum memulai, pastikan untuk menambahkan Firebase ke proyek iOS Anda .
Siapkan Firebase dan Dynamic Links SDK
Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.
- Di Xcode, dengan proyek aplikasi Anda terbuka, arahkan ke File > Add Packages .
- Saat diminta, tambahkan repositori SDK platform Apple Firebase:
- Pilih pustaka Tautan Dinamis.
- Untuk pengalaman optimal dengan Dynamic Links, sebaiknya aktifkan Google Analytics di project Firebase Anda dan tambahkan Firebase SDK untuk Google Analytics ke aplikasi Anda. Anda dapat memilih perpustakaan tanpa koleksi IDFA atau dengan koleksi IDFA.
- Setelah selesai, Xcode akan secara otomatis mulai menyelesaikan dan mengunduh dependensi Anda di latar belakang.
https://github.com/firebase/firebase-ios-sdk
Sekarang, lakukan beberapa langkah konfigurasi:
- Di konsol Firebase , buka bagian Tautan Dinamis . Terima persyaratan layanan jika Anda diminta untuk melakukannya.
Pastikan ID App Store aplikasi dan awalan ID Aplikasi Anda ditentukan di setelan aplikasi. Untuk melihat dan mengedit setelan aplikasi Anda, buka halaman Setelan project Firebase Anda dan pilih aplikasi iOS Anda.
Anda dapat mengonfirmasi bahwa project Firebase Anda telah dikonfigurasi dengan benar untuk menggunakan Dynamic Links di aplikasi iOS dengan membuka URL berikut:
https://your_dynamic_links_domain/apple-app-site-association
Jika aplikasi Anda terhubung, file
apple-app-site-association
berisi referensi ke awalan ID Aplikasi dan ID bundel aplikasi Anda. Sebagai contoh:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
Jika bidang
details
kosong, periksa kembali apakah Anda telah menentukan awalan ID Aplikasi. Perhatikan bahwa awalan ID Aplikasi Anda mungkin tidak sama dengan ID Tim Anda.Opsional : Nonaktifkan penggunaan papan pengumuman iOS oleh Dynamic Links SDK.
Secara default, Dynamic Links SDK menggunakan pasteboard untuk meningkatkan keandalan deep link pasca-pemasangan. 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, 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 kunciFirebaseDeepLinkPasteboardRetrievalEnabled
keNO
.
Buka Dynamic Links di aplikasi Anda
- Di tab Info project Xcode aplikasi Anda, buat jenis URL baru yang akan digunakan untuk Dynamic Links. Setel bidang Pengenal ke nilai unik dan bidang skema URL menjadi pengenal bundel Anda, yang merupakan skema URL default yang digunakan oleh Dynamic Links.
- Di tab Kemampuan proyek Xcode aplikasi Anda, aktifkan Associated Domains dan tambahkan berikut ini ke daftar Associated Domains :
applinks:your_dynamic_links_domain
- Jika Anda ingin menerima Tautan Dinamis dengan domain yang sepenuhnya khusus , dalam file
Info.plist
proyek Xcode Anda, buat kunci bernamaFirebaseDynamicLinksCustomDomains
dan setel ke awalan URL Tautan Dinamis aplikasi Anda. Misalnya:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Impor modul
FirebaseCore
diUIApplicationDelegate
Anda, serta modul Firebase lainnya yang digunakan oleh delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Cepat
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurasikan instance bersama
FirebaseApp
dalam metodeapplication(_:didFinishLaunchingWithOptions:)
delegasi aplikasi Anda:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Cepat
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Jika Anda menggunakan SwiftUI, Anda harus membuat delegasi aplikasi dan melampirkannya ke struktur
App
Anda melaluiUIApplicationDelegateAdaptor
atauNSApplicationDelegateAdaptor
. Anda juga harus menonaktifkan swizzling delegasi aplikasi. Untuk informasi selengkapnya, lihat petunjuk SwiftUI .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Selanjutnya, dalam metode
application:continueUserActivity:restorationHandler:
:, tangani tautan yang diterima sebagai Tautan Universal saat aplikasi sudah diinstal:Cepat
Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
Objective-C
Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; }
- Terakhir, di
application:openURL:options:
tangani tautan yang diterima melalui skema URL khusus aplikasi Anda. Metode ini dipanggil saat aplikasi Anda dibuka untuk pertama kali setelah penginstalan.Jika Dynamic Link tidak ditemukan pada peluncuran pertama aplikasi Anda, metode ini akan dipanggil dengan
url
DynamicLink
disetel kenil
, yang menunjukkan bahwa SDK gagal menemukan Dynamic Link pencocokan yang tertunda.Cepat
Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
Objective-C
Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }