หากต้องการรับ Firebase Dynamic Links ที่
ที่คุณสร้างขึ้น คุณต้องรวม Dynamic Links SDK ในแอป และเรียกใช้
handleUniversalLink:
และ dynamicLinkFromCustomSchemeURL:
เมื่อแอปของคุณโหลดเพื่อรับข้อมูลที่ส่งใน Dynamic Link
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น ให้เพิ่ม Firebase ลงใน iOS โปรเจ็กต์
ตั้งค่า Firebase และ Dynamic Links SDK
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
- เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ไฟล์ > เพิ่มแพ็กเกจ
- เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK สำหรับแพลตฟอร์ม Firebase ของ Apple ดังนี้
- เลือกไลบรารี Dynamic Links
- เพิ่มแฟล็ก
-ObjC
ลงในส่วนแฟล็ก Linker อื่นๆ ของการตั้งค่าบิลด์ของเป้าหมาย - เราขอแนะนำเพื่อประสบการณ์การใช้งาน Dynamic Links ที่ดีที่สุด กำลังเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอป คุณสามารถ ให้เลือกไลบรารีที่ไม่มีการรวบรวม IDFA หรือมีคอลเล็กชัน IDFA
- เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ปัญหาและดาวน์โหลด ทรัพยากร Dependency ในเบื้องหลัง
https://github.com/firebase/firebase-ios-sdk.git
โดยทำตามขั้นตอนการกำหนดค่าต่อไปนี้
- ในคอนโซล Firebase ให้เปิด Dynamic Links ยอมรับข้อกำหนดในการให้บริการ หากคุณได้รับแจ้งให้ทำเช่นนั้น
-
ตรวจสอบว่ารหัส App Store ของแอปและคำนำหน้ารหัสแอป ที่ระบุในการตั้งค่าแอปของคุณ หากต้องการดูและแก้ไขการตั้งค่าของแอป ให้ไปที่ ลงในโปรเจ็กต์ Firebase หน้าการตั้งค่า แล้วเลือกแอป iOS
คุณสามารถยืนยันว่าได้กำหนดค่าโปรเจ็กต์ Firebase อย่างถูกต้องเพื่อใช้ Dynamic Links ในแอป iOS โดยเปิด URL ต่อไปนี้
https://your_dynamic_links_domain/apple-app-site-association
หากแอปของคุณเชื่อมต่ออยู่ ไฟล์
apple-app-site-association
จะมีข้อมูลอ้างอิง กับคำนำหน้ารหัสแอปและรหัสชุดของแอป เช่น{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
หากช่อง
details
ว่างเปล่า โปรดตรวจสอบอีกครั้งว่าคุณได้ระบุแล้ว คำนำหน้ารหัสแอป โปรดทราบว่าคำนำหน้ารหัสแอปอาจไม่เหมือนกับรหัสทีม -
ไม่บังคับ: ปิดใช้ iOS ของ Dynamic Links SDK Pasteboard
โดยค่าเริ่มต้น Dynamic Links SDK จะใช้ Pasteboard เพื่อปรับปรุงองค์ประกอบ ความน่าเชื่อถือของ Deep Link หลังการติดตั้ง การใช้พาสบอร์ด Dynamic Links ช่วยให้มั่นใจว่าเมื่อผู้ใช้เปิด Dynamic Link แต่ต้องการติดตั้ง ก่อนที่ผู้ใช้จะไปที่เนื้อหาเดิมที่ลิงก์ได้ทันที เปิดแอปเป็นครั้งแรกหลังการติดตั้ง
ข้อเสียก็คือการใช้เพสบอร์ดจะทริกเกอร์ ใน iOS 14 ขึ้นไป ดังนั้น ครั้งแรกที่ผู้ใช้เปิดแอป ถ้า Pasteboard มี URL พวกเขาจะเห็นการแจ้งเตือนว่า เข้าถึง Pasteboard ซึ่งอาจทำให้เกิดความสับสน
หากต้องการปิดใช้การทำงานนี้ ให้แก้ไขโปรเจ็กต์ Xcode
Info.plist
ไฟล์และตั้งค่า กดแป้นFirebaseDeepLinkPasteboardRetrievalEnabled
เพื่อNO
เปิด Dynamic Links ในแอปของคุณ
- ในแท็บ Info ของโปรเจ็กต์ Xcode ของแอป ให้สร้างเวอร์ชันใหม่ ประเภท URL ที่จะใช้สำหรับ Dynamic Links ตั้งค่า ตัวระบุเป็นค่าที่ไม่ซ้ำกัน และช่องรูปแบบ URL ที่จะ เป็นตัวระบุกลุ่ม ซึ่งเป็นรูปแบบ URL เริ่มต้นที่ Dynamic Links ใช้
- ในแท็บ Capabilities ของโปรเจ็กต์ Xcode ของแอป
เปิดใช้โดเมนที่เชื่อมโยง และเพิ่มข้อมูลต่อไปนี้ลงใน
รายการโดเมนมีดังนี้
applinks:your_dynamic_links_domain
- หากคุณต้องการรับ Dynamic Links ด้วย
โดเมนที่กำหนดเองทั้งหมด ใน
ไฟล์
Info.plist
ของโปรเจ็กต์ Xcode ของคุณ ให้สร้างคีย์ชื่อFirebaseDynamicLinksCustomDomains
และตั้งค่าเป็น คำนำหน้า URL Dynamic Links เช่นFirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - นำเข้าโมดูล
FirebaseCore
ในUIApplicationDelegate
และอื่นๆ โมดูล Firebase ที่ผู้รับมอบสิทธิ์แอปใช้ ตัวอย่างเช่น หากต้องการใช้ Cloud Firestore และ Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- กําหนดค่า
FirebaseApp
อินสแตนซ์ที่แชร์ใน เมธอดapplication(_:didFinishLaunchingWithOptions:)
:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- หากใช้ SwiftUI คุณต้องสร้างการมอบสิทธิ์แอปพลิเคชันและแนบการมอบสิทธิ์
ไปยังโครงสร้าง
App
ของคุณผ่านUIApplicationDelegateAdaptor
หรือNSApplicationDelegateAdaptor
คุณต้องปิดใช้ SWizzing ที่มอบสิทธิ์ของแอปด้วย สำหรับ สำหรับข้อมูลเพิ่มเติม โปรดดูวิธีการของ SwiftUISwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- จากนั้น ในเมธอด
application:continueUserActivity:restorationHandler:
ให้จัดการลิงก์ที่ได้รับในฐานะ Universal Link เมื่อติดตั้งแอปแล้วSwift
หมายเหตุ: ผลิตภัณฑ์นี้ใช้ไม่ได้ในเป้าหมาย macOS, Mac Catalyst, tvOS หรือ watchOSfunc 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
หมายเหตุ: ผลิตภัณฑ์นี้ใช้ไม่ได้ในเป้าหมาย macOS, Mac Catalyst, tvOS หรือ 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; }
- สุดท้าย ใน
application:openURL:options:
จัดการลิงก์ ได้รับผ่าน Scheme ของ URL ที่กำหนดเองของแอป ระบบจะเรียกเมธอดนี้เมื่อ แอปของคุณเปิดเป็นครั้งแรกหลังการติดตั้งหากไม่พบ Dynamic Link ในการเปิดใช้งานครั้งแรกของแอป ระบบจะเรียกใช้เมธอดนี้ด้วยเมธอด
url
ของDynamicLink
ตั้งค่าเป็นnil
ซึ่งบ่งชี้ว่า SDK ไม่พบ Dynamic Link ที่ตรงกันที่รอดำเนินการSwift
หมายเหตุ: ผลิตภัณฑ์นี้ใช้ไม่ได้ในเป้าหมาย macOS, Mac Catalyst, tvOS หรือ 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
หมายเหตุ: ผลิตภัณฑ์นี้ใช้ไม่ได้ในเป้าหมาย macOS, Mac Catalyst, tvOS หรือ 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; }