כדי לקבל את Firebase Dynamic Links שיצרת , עליך לכלול את Dynamic Links SDK באפליקציה שלך ולקרוא לשיטות handleUniversalLink:
ו- dynamicLinkFromCustomSchemeURL:
כאשר האפליקציה שלך נטענת כדי להעביר את הנתונים ב- Dynamic Link.
דרישות מוקדמות
לפני שתתחיל, הקפד להוסיף את Firebase לפרויקט iOS שלך .
הגדר את Firebase ואת ה-SDK של Dynamic Links
השתמש ב- Swift Package Manager כדי להתקין ולנהל תלות ב-Firebase.
- ב-Xcode, כשפרויקט האפליקציה שלך פתוח, נווט אל קובץ > הוסף חבילות .
- כשתתבקש, הוסף את מאגר Firebase Apple platforms SDK:
- בחר את ספריית הקישורים הדינמיים.
- הוסף את הדגל
-ObjC
לקטע Other Linker Flags של הגדרות הבנייה של היעד שלך. - לחוויה מיטבית עם קישורים דינמיים, אנו ממליצים להפעיל את 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 שלך על ידי פתיחת כתובת האתר הבאה:
https://your_dynamic_links_domain/apple-app-site-association
אם האפליקציה שלך מחוברת, קובץ ה-
apple-app-site-association
מכיל הפניה לקידומת App ID ומזהה החבילה של האפליקציה שלך. לדוגמה:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
אם שדה
details
ריק, בדוק שוב שציינת את הקידומת של מזהה האפליקציה שלך. שים לב שייתכן שהקידומת של מזהה האפליקציה שלך לא תהיה זהה לזהות הצוות שלך.אופציונלי : השבת את השימוש ב-SDK של Dynamic Links בלוח הדבק של iOS.
כברירת מחדל, ה-SDK של Dynamic Links משתמש בלוח ההדבקה כדי לשפר את האמינות של קישורי עומק לאחר ההתקנה. על ידי שימוש בלוח ההדבקה, Dynamic Links יכולים לוודא שכאשר משתמש פותח קישור דינמי אך צריך להתקין תחילה את האפליקציה שלך, המשתמש יכול לעבור מיד לתוכן המקושר המקורי בעת פתיחת האפליקציה בפעם הראשונה לאחר ההתקנה.
החיסרון של זה הוא שהשימוש בלוח הדבק מפעיל התראה ב-iOS 14 ואילך. לכן, בפעם הראשונה שמשתמשים פותחים את האפליקציה שלך, אם הלוח מכיל כתובת URL, הם יראו הודעה שהאפליקציה שלך ניגשה ללוח, מה שעלול לגרום לבלבול.
כדי להשבית התנהגות זו, ערוך את הקובץ
Info.plist
של פרויקט Xcode שלך והגדר את מקשFirebaseDeepLinkPasteboardRetrievalEnabled
למצבNO
.
פתח קישורים דינמיים באפליקציה שלך
- בכרטיסייה מידע של פרויקט Xcode של האפליקציה שלך, צור סוג כתובת URL חדש שישמש עבור קישורים דינמיים. הגדר את שדה המזהה לערך ייחודי ואת שדה סכימת ה-URL להיות מזהה החבילה שלך, שהיא ערכת ברירת המחדל של כתובת האתר המשמשת את הקישורים הדינמיים.
- בלשונית היכולות של פרויקט ה-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 // ...
Objective-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()
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:
טפל בקישורים שהתקבלו כקישורים אוניברסליים כאשר האפליקציה כבר מותקנת:מָהִיר
הערה: מוצר זה אינו זמין ביעדי 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
של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 }
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; }