כדי לקבל את ה-Firebase Dynamic Links
שיצרתם, אתם צריכים לכלול את ה-SDK של Dynamic Links באפליקציה ולקרוא ל-methods handleUniversalLink: ו-dynamicLinkFromCustomSchemeURL: כשהאפליקציה נטענת, כדי לקבל את הנתונים שהועברו ב-Dynamic Link.
דרישות מוקדמות
לפני שמתחילים, צריך לוודא שהוספתם את Firebase לפרויקט ב-iOS.
הגדרת Firebase ו-Dynamic Links SDK
משתמשים ב-Swift Package Manager כדי להתקין ולנהל את יחסי התלות של Firebase.
- ב-Xcode, כשהפרויקט של האפליקציה פתוח, עוברים אל File > Add Packages (קובץ > הוספת חבילות).
- כשמוצגת בקשה, מוסיפים את מאגר ה-SDK של Firebase לפלטפורמות של אפל:
- בוחרים את הספרייה Dynamic Links.
- מוסיפים את הדגל
-ObjCלקטע Other Linker Flags (דגלים אחרים של מקשרים) בהגדרות ה-build של היעד. - כדי ליהנות מחוויית שימוש אופטימלית ב-Dynamic Links, מומלץ להפעיל את Google Analytics בפרויקט Firebase ולהוסיף לאפליקציה את Firebase SDK for Google Analytics. אפשר לבחור בספרייה בלי איסוף של IDFA או בספרייה עם איסוף של IDFA. שאלות נפוצות על הארגון העדכני של המודולים ב-Google Analytics for Firebase SDK
- אחרי שתסיימו, פלטפורמת Xcode תתחיל לטפל ביחסי התלות ולהוריד אותם באופן אוטומטי ברקע.
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ריק, צריך לוודא שציינתם את הקידומת של מזהה האפליקציה. חשוב לשים לב שהקידומת של מזהה האפליקציה לא בהכרח זהה למזהה הצוות. -
אופציונלי: משביתים את השימוש של ה-SDK של Dynamic Links בלוח של iOS.
כברירת מחדל, ה-SDK של Dynamic Links משתמש בלוח כדי לשפר את האמינות של קישורי עומק לאחר ההתקנה. באמצעות לוח ההדבקה, Dynamic Links יכול לוודא שכאשר משתמש פותח Dynamic Link אבל צריך קודם להתקין את האפליקציה, הוא יכול לעבור מיד לתוכן המקורי המקושר כשהוא פותח את האפליקציה בפעם הראשונה אחרי ההתקנה.
החיסרון הוא שהשימוש בלוח מעורר התראה ב-iOS 14 ואילך. לכן, בפעם הראשונה שמשתמשים פותחים את האפליקציה, אם לוח ההדבקה מכיל כתובת URL, הם יראו התראה על כך שהאפליקציה ניגשה ללוח ההדבקה, וזה עלול לבלבל אותם.
כדי להשבית את ההתנהגות הזו, עורכים את הקובץ
Info.plistשל פרויקט Xcode ומגדירים את המפתחFirebaseDeepLinkPasteboardRetrievalEnabledלערךNO.
פתיחת Dynamic Links באפליקציה
- בכרטיסייה Info בפרויקט Xcode של האפליקציה, יוצרים סוג חדש של כתובת URL שישמש ל-Dynamic Links. מגדירים את השדה Identifier לערך ייחודי ואת השדה URL scheme למזהה החבילה, שהוא סכמת ברירת המחדל של כתובת ה-URL שמשמשת את Dynamic Links.
- בכרטיסייה Capabilities (יכולות) בפרויקט Xcode של האפליקציה, מפעילים את האפשרות Associated Domains (דומיינים משויכים) ומוסיפים את הדומיינים הבאים לרשימה Associated Domains:
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 אחר שבו משתמש ה-app delegate. לדוגמה, כדי להשתמש ב-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ב-methodapplication(_: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, אתם צריכים ליצור נציג של האפליקציה ולצרף אותו ל-struct של
AppבאמצעותUIApplicationDelegateAdaptorאוNSApplicationDelegateAdaptor. צריך גם להשבית את ה-swizzling של נציג האפליקציה. מידע נוסף זמין בהוראות של SwiftUI.SwiftUI
@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:, מטפלים בקישורים שמתקבלים בתור קישורים אוניברסליים כשהאפליקציה כבר מותקנת:Swift
הערה: המוצר הזה לא זמין ביעדים של macOS, Mac Catalyst, tvOS או 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
הערה: המוצר הזה לא זמין ביעדים של 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 לא נמצא בהפעלה הראשונה של האפליקציה, השיטה הזו תיקרא עם הערך
nilב-urlשלDynamicLink, כדי לציין שערכת ה-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; }