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