หากต้องการรับ Firebase Dynamic Links ที่ คุณสร้างขึ้น คุณต้องรวม Dynamic Links SDK ไว้ในแอปของคุณและเรียกใช้ handleUniversalLink:
และ dynamicLinkFromCustomSchemeURL:
เมื่อแอปของคุณโหลดเพื่อรับข้อมูลที่ส่งผ่านใน Dynamic Link
ข้อกำหนดเบื้องต้น
ก่อนที่คุณจะเริ่มต้น อย่าลืม เพิ่ม Firebase ลงในโปรเจ็กต์ iOS ของคุณ
ตั้งค่า Firebase และ Dynamic Links SDK
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการการพึ่งพา Firebase
- ใน Xcode เมื่อโปรเจ็กต์แอปของคุณเปิดอยู่ ให้ไปที่ File > Add Package
- เมื่อได้รับแจ้ง ให้เพิ่มพื้นที่เก็บข้อมูล SDK แพลตฟอร์ม Firebase Apple:
- เลือกไลบรารีลิงก์แบบไดนามิก
- เพิ่มแฟล็ก
-ObjC
ไปยังส่วน Other Linker Flags ของการตั้งค่า build ของเป้าหมายของคุณ - เพื่อประสบการณ์การใช้งานลิงก์แบบไดนามิกที่ดีที่สุด เราขอแนะนำ ให้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase ของคุณ และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณ คุณสามารถเลือกไลบรารีที่ไม่มีการรวบรวม IDFA หรือด้วยการรวบรวม IDFA
- เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดการอ้างอิงของคุณโดยอัตโนมัติในเบื้องหลัง
https://github.com/firebase/firebase-ios-sdk.git
ตอนนี้ให้ทำตามขั้นตอนการกำหนดค่าบางอย่าง:
- ใน คอนโซล Firebase ให้เปิดส่วน ลิงก์แบบไดนามิก ยอมรับข้อกำหนดในการให้บริการหากคุณได้รับแจ้งให้ทำเช่นนั้น
ตรวจสอบให้แน่ใจว่าได้ระบุรหัส App Store ของแอปและคำนำหน้ารหัสแอปของคุณในการตั้งค่าของแอป หากต้องการดูและแก้ไขการตั้งค่าแอปของคุณ ให้ไปที่ หน้าการตั้งค่า ของโปรเจ็กต์ Firebase และเลือกแอป iOS ของคุณ
คุณสามารถยืนยันได้ว่าโปรเจ็กต์ Firebase ของคุณได้รับการกำหนดค่าอย่างถูกต้องเพื่อใช้ลิงก์แบบไดนามิกในแอป 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
ตามค่าเริ่มต้น Dynamic Links SDK จะใช้เพซบอร์ดเพื่อปรับปรุงความน่าเชื่อถือของลิงก์ในรายละเอียดหลังการติดตั้ง การใช้เพสต์บอร์ดช่วยให้ไดนามิกลิงก์มั่นใจได้ว่าเมื่อผู้ใช้เปิดไดนามิกลิงก์แต่จำเป็นต้องติดตั้งแอปของคุณก่อน ผู้ใช้สามารถไปที่เนื้อหาที่ลิงก์ต้นฉบับได้ทันทีเมื่อเปิดแอปเป็นครั้งแรกหลังการติดตั้ง
ข้อเสียคือการใช้พาสบอร์ดจะทำให้เกิดการแจ้งเตือนบน iOS 14 และใหม่กว่า ดังนั้น ในครั้งแรกที่ผู้ใช้เปิดแอปของคุณ หากบอร์ดวางมี URL พวกเขาจะเห็นการแจ้งเตือนว่าแอปของคุณเข้าถึงบอร์ดวาง ซึ่งอาจทำให้เกิดความสับสนได้
หากต้องการปิดใช้งานพฤติกรรมนี้ ให้แก้ไขไฟล์
Info.plist
ของโปรเจ็กต์ Xcode และตั้งค่าคีย์FirebaseDeepLinkPasteboardRetrievalEnabled
เป็นNO
เปิดลิงก์แบบไดนามิกในแอปของคุณ
- ในแท็บ ข้อมูล ของโปรเจ็กต์ Xcode ของแอปของคุณ ให้สร้างประเภท URL ใหม่ที่จะใช้สำหรับลิงก์แบบไดนามิก ตั้งค่า ฟิลด์ Identifier เป็นค่าที่ไม่ซ้ำใคร และฟิลด์ Scheme URL ให้เป็นตัวระบุบันเดิลของคุณ ซึ่งเป็น Scheme URL เริ่มต้นที่ใช้โดย Dynamic Links
- ในแท็บ ความสามารถ ของโปรเจ็กต์ Xcode ของแอปของคุณ ให้เปิดใช้งาน Associated Domains และเพิ่มรายการต่อไปนี้ในรายการ Associated Domains :
applinks:your_dynamic_links_domain
- หากคุณต้องการรับลิงก์แบบไดนามิกพร้อม โดเมนที่กำหนดเองโดยสมบูรณ์ ในไฟล์
Info.plist
ของโปรเจ็กต์ Xcode ให้สร้างคีย์ชื่อFirebaseDynamicLinksCustomDomains
และตั้งค่าเป็นคำนำหน้า URL ลิงก์แบบไดนามิกของแอปของคุณ ตัวอย่างเช่น:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - นำเข้าโมดูล
FirebaseCore
ในUIApplicationDelegate
ของคุณ รวมถึง โมดูล Firebase อื่นๆ ที่แอปของคุณมอบหมายใช้ ตัวอย่างเช่น หากต้องการใช้ Cloud Firestore และการตรวจสอบสิทธิ์ ให้ทำดังนี้SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
สวิฟท์
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
วัตถุประสงค์-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- กำหนดค่าอินสแตนซ์ที่ใช้ร่วมกันของ
FirebaseApp
ในapplication(_:didFinishLaunchingWithOptions:)
ของผู้รับมอบสิทธิ์แอปของคุณ:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
สวิฟท์
// Use Firebase library to configure APIs FirebaseApp.configure()
วัตถุประสงค์-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 Links เมื่อติดตั้งแอปแล้ว:สวิฟท์
หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้งานได้บนเป้าหมาย 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 }
วัตถุประสงค์-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 ที่กำหนดเองของแอปของคุณ วิธีการนี้เรียกว่าเมื่อเปิดแอปของคุณเป็นครั้งแรกหลังการติดตั้งหากไม่พบลิงก์แบบไดนามิกในการเปิดตัวแอปครั้งแรก วิธีการนี้จะถูกเรียกใช้โดยตั้ง
url
ของDynamicLink
เป็นnil
ซึ่งบ่งชี้ว่า SDK ล้มเหลวในการค้นหาลิงก์แบบไดนามิกที่รอดำเนินการที่ตรงกันสวิฟท์
หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้งานได้บนเป้าหมาย 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 }
วัตถุประสงค์-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; }