כדי לקבל את Firebase Dynamic Links ש
שיצרתם, עליכם לכלול את ה-SDK של Dynamic Links באפליקציה שלכם ולקרוא
handleUniversalLink:
ו-dynamicLinkFromCustomSchemeURL:
שיטות כשהאפליקציה נטענת כדי לקבל את הנתונים שמועברים ב-Dynamic Link.
דרישות מוקדמות
לפני שמתחילים, חשוב להוסיף את Firebase למכשיר ה-iOS project.
הגדרת Firebase ו-Dynamic Links SDK
שימוש ב-Swift Package Manager כדי להתקין ולנהל יחסי תלות של Firebase.
- ב-Xcode, כשפרויקט האפליקציה פתוח, עוברים אל File > (קובץ >) הוספת חבילות.
- כשמופיעה בקשה, מוסיפים את מאגר ה-SDK של מוצרי הפלטפורמה של Firebase של Apple:
- בוחרים את הספרייה Dynamic Links.
- מוסיפים את הדגל
-ObjC
לקטע סימונים של מקשר אחר בהגדרות ה-build של היעד. - כדי ליהנות מחוויה אופטימלית עם Dynamic Links, מומלץ הפעלת Google Analytics בפרויקט Firebase והוספת ה-SDK של Firebase ל-Google Analytics לאפליקציה. אפשר בוחרים את הספרייה בלי אוסף IDFA או עם איסוף IDFA.
- בסיום, 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
ריק, כדאי לבדוק שוב שציינתם. את הקידומת של מזהה האפליקציה. לתשומת ליבכם: התחילית של מזהה האפליקציה עשויה להיות שונה מ-Team ID. -
אופציונלי: השבתת השימוש של Dynamic Links ה-SDK ב-iOS לוח הדבקה.
כברירת מחדל, ערכת ה-SDK של Dynamic Links משתמשת בלוח העריכה כדי לשפר את של קישורי עומק לאחר ההתקנה. באמצעות הלוח, Dynamic Links יכול לוודא שכאשר משתמש פותח Dynamic Link אבל צריך להתקין את האפליקציה קודם, המשתמש יכול לעבור מיד לתוכן המקורי המקושר כשפותחים את האפליקציה בפעם הראשונה אחרי ההתקנה.
החיסרון של זה הוא שהשימוש בלוח העריכה גורם להפעלת התראה ב-iOS 14 ואילך. לכן, בפעם הראשונה שמשתמשים יפתחו את האפליקציה, אם הלוח יכלול כתובת URL, תוצג להם התראה על כך שהאפליקציה שלכם ניגשה ללוח, וזה עלול לבלבל אותם.
כדי להשבית את ההתנהגות הזו, צריך לערוך את פרטי פרויקט ה-Xcode
Info.plist
ולהגדיר את מקשFirebaseDeepLinkPasteboardRetrievalEnabled
אלNO
.
פתיחת Dynamic Links באפליקציה
- בכרטיסייה Info (מידע) בפרויקט Xcode של האפליקציה, יוצרים קובץ חדש סוג כתובת URL לשימוש עבור Dynamic Links. מגדירים את השדה Identifier הוא ערך ייחודי והשדה URL scheme הוא יהיה מזהה החבילה שלך, שהוא סכימת ברירת המחדל של כתובת ה-URL שבה נעשה שימוש ב-Dynamic Links.
- בכרטיסייה Capabilities של פרויקט Xcode של האפליקציה,
להפעיל את 'דומיינים משויכים' ולהוסיף את כתובות ה-URL הבאות אל Associated
רשימת הדומיינים:
applinks:your_dynamic_links_domain
- כדי לקבל Dynamic Links באמצעות
דומיין מותאם אישית במלואו, ב-
את הקובץ
Info.plist
של פרויקט ה-Xcode, יוצרים מפתח שנקראFirebaseDynamicLinksCustomDomains
ולהגדיר אותו Dynamic Links קידומות של כתובות URL. לדוגמה: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
. צריך גם להשבית את האפשרות להענקת גישה לאפליקציה. עבור לקבלת מידע נוסף, קראו את ההוראות של 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<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:
שהתקבלו דרך סכימת כתובת ה-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; }