หากต้องการรับ Firebase Dynamic Links ที่
คุณสร้าง คุณต้องรวม SDK ของ Dynamic Links ไว้ในแอปและเรียกใช้เมธอด handleUniversalLink: และ dynamicLinkFromCustomSchemeURL:
 เมื่อแอปโหลดเพื่อรับข้อมูลที่ส่งใน Dynamic Link
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้นใช้งาน โปรดเพิ่ม Firebase ลงในโปรเจ็กต์ iOS
ตั้งค่า Firebase และ Dynamic Links SDK
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
- เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่File > Add Packages
- เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ Firebase Apple Platforms SDK ดังนี้
- เลือกDynamic Links คลัง
- เพิ่มแฟล็ก -ObjCลงในส่วนแฟล็ก Linker อื่นๆ ของการตั้งค่าบิลด์ของเป้าหมาย
- เพื่อประสบการณ์การใช้งาน Dynamic Links ที่ดีที่สุด เราขอแนะนําให้ เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase และเพิ่ม Firebase SDK สําหรับ Google Analytics ลงในแอป คุณสามารถ เลือกไลบรารีที่ไม่มีการเก็บรวบรวม IDFA หรือมีการเก็บรวบรวม IDFA ก็ได้ ดูคำถามที่พบบ่อยเกี่ยวกับ การจัดระเบียบโมดูลล่าสุดใน Google Analytics สำหรับ Firebase SDK
- เมื่อเสร็จแล้ว Xcode จะเริ่มจับคู่ข้อมูลและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ
https://github.com/firebase/firebase-ios-sdk.git
ตอนนี้ให้ทำตามขั้นตอนการกำหนดค่าต่อไปนี้
- เปิดส่วน Dynamic Links ในคอนโซล Firebase ยอมรับข้อกำหนดในการให้บริการหากได้รับแจ้งให้ดำเนินการ
- 
    ตรวจสอบว่าได้ระบุ App Store ID ของแอปและคำนำหน้า App ID ในการตั้งค่าของแอป หากต้องการดูและแก้ไขการตั้งค่าของแอป ให้ไปที่ หน้าการตั้งค่าของโปรเจ็กต์ Firebase แล้วเลือกแอป iOS คุณยืนยันได้ว่าโปรเจ็กต์ Firebase ได้รับการกำหนดค่าอย่างถูกต้องเพื่อใช้ Dynamic Links ในแอป iOS โดยเปิด URL ต่อไปนี้ https://your_dynamic_links_domain/apple-app-site-association หากแอปเชื่อมต่ออยู่ ไฟล์ apple-app-site-associationจะมีการอ้างอิง ไปยังคำนำหน้า App ID และ Bundle ID ของแอป เช่น{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}หากฟิลด์ detailsว่างเปล่า ให้ตรวจสอบอีกครั้งว่าคุณได้ระบุ คำนำหน้า App ID แล้ว โปรดทราบว่าคำนำหน้ารหัสแอปอาจไม่เหมือนกับรหัสทีม
- 
    ไม่บังคับ: ปิดใช้การใช้เพสต์บอร์ด iOS ของ SDK Dynamic Links โดยค่าเริ่มต้น Dynamic Links SDK จะใช้กระดานวางเพื่อปรับปรุงความน่าเชื่อถือของ Deep Link หลังการติดตั้ง การใช้ Pasteboard ช่วยให้ Dynamic Links มั่นใจได้ว่าเมื่อผู้ใช้เปิด Dynamic Link แต่ต้องติดตั้งแอปของคุณก่อน ผู้ใช้จะไปยังเนื้อหาที่ลิงก์เดิมได้ทันทีเมื่อ เปิดแอปเป็นครั้งแรกหลังการติดตั้ง ข้อเสียของวิธีนี้คือการใช้เพจจะทริกเกอร์การแจ้งเตือนใน iOS 14 ขึ้นไป ดังนั้น ครั้งแรกที่ผู้ใช้เปิดแอปของคุณ หากกระดานวางมี URL ผู้ใช้จะเห็นการแจ้งเตือนว่าแอปของคุณ เข้าถึงกระดานวาง ซึ่งอาจทำให้เกิดความสับสน หากต้องการปิดใช้ลักษณะการทำงานนี้ ให้แก้ไขไฟล์ Info.plistของโปรเจ็กต์ Xcode และตั้งค่าคีย์FirebaseDeepLinkPasteboardRetrievalEnabledเป็นNO
เปิด Dynamic Links ในแอป
- ในแท็บข้อมูลของโปรเจ็กต์ Xcode ของแอป ให้สร้าง ประเภท URL ใหม่ที่จะใช้สำหรับ Dynamic Links ตั้งค่าฟิลด์ ตัวระบุเป็นค่าที่ไม่ซ้ำกัน และตั้งค่าฟิลด์ URL Scheme เป็น ตัวระบุแพ็กเกจ ซึ่งเป็น URL Scheme เริ่มต้นที่ Dynamic Links ใช้
- ในแท็บความสามารถของโปรเจ็กต์ 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 ให้ทำดังนี้SwiftUIimport SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ... Swiftimport 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นอกจากนี้ คุณยังต้องปิดใช้การสลับแทนของตัวแทนแอปด้วย ดูข้อมูลเพิ่มเติมได้ที่วิธีการสำหรับ 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 > *_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:จัดการลิงก์ ที่ได้รับผ่านชุดรูปแบบ URL ที่กำหนดเองของแอป เมธอดนี้จะเรียกใช้เมื่อ มีการเปิดแอปเป็นครั้งแรกหลังจากติดตั้งหากไม่พบ Dynamic Link เมื่อเปิดแอปครั้งแรก ระบบจะเรียกใช้วิธีนี้โดยมี DynamicLinkของurlตั้งค่าเป็น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 *)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; }