Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

קבל קישורים דינמיים ב- iOS

כדי לקבל את הקישורים הדינמיים של Firebase שיצרת , עליך לכלול את ה- SDK של קישורים דינמיים באפליקציה שלך ולקרוא ל- handleUniversalLink: ו- dynamicLinkFromCustomSchemeURL: שיטות כאשר היישום שלך נטען כדי להעביר את הנתונים בקישור הדינמי.

תנאים מוקדמים

קישורים דינמיים של Firebase דורשים iOS 8 ומעלה. באפשרותך למקד ל- iOS 7 באפליקציה שלך, אך כל שיחות ה- SDK של קישורי דינמי Firebase לא יופעלו אם האפליקציה אינה פועלת ב- iOS 8 ואילך.

  1. הוסף את Firebase לפרויקט ה- iOS שלך . כלול את התרמיל הבא Podfile שלך:
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
  2. הפעל את pod install ופתח את קובץ ה- .xcworkspace שנוצר.
  3. במסוף Firebase , פתח את הקטע קישורים דינמיים . קבל את תנאי השירות אם תתבקש לעשות זאת.
  4. ודא שמזהה היישום שלך ב- App Store וקידומת מזהה האפליקציה שלך מוגדרים בהגדרות האפליקציה שלך. כדי להציג ולערוך את הגדרות האפליקציה שלך, עבור לדף ההגדרות של פרויקט Firebase ובחר באפליקציית iOS שלך.

    אתה יכול לאשר שפרויקט Firebase שלך ​​מוגדר כראוי לשימוש בקישורים דינמיים באפליקציית iOS שלך על ידי פתיחת כתובת האתר הבאה:

    https://your_dynamic_links_domain/apple-app-site-association

    אם האפליקציה שלך מחוברת, הקובץ apple-app-site-association מכיל התייחסות לקידומת מזהה האפליקציה של היישום שלך ומזהה החבילה. לדוגמה:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}

    אם שדה details ריק, בדוק שוב שציינת את קידומת מזהה היישום שלך. שים לב שקידומת מזהה האפליקציה שלך עשויה שלא להיות זהה למזהה הצוות שלך.

  5. אופציונלי : השבת את השימוש ב- SDK של קישורים דינמיים בקרטון iOS.

    כברירת מחדל, ה- SDK של קישורים דינמיים משתמש בלוח הגבייה כדי לשפר את האמינות של קישורים עמוקים לאחר ההתקנה. על ידי שימוש בלוח, קישורים דינמיים יכולים לוודא שכאשר משתמש פותח קישור דינמי אך צריך להתקין את האפליקציה תחילה, המשתמש יכול לעבור מיד לתוכן המקושר המקורי בעת פתיחת האפליקציה בפעם הראשונה לאחר ההתקנה.

    החיסרון של זה הוא שהשימוש בלוח הקטן מפעיל התראה ב- iOS 14 ואילך. לכן, בפעם הראשונה שמשתמשים פותחים את האפליקציה שלך, אם לוח הקרש מכיל כתובת URL של קישור דינמי, הם יראו התראה על כך שהאפליקציה שלך ניגשה לקרש, דבר שעלול לגרום לבלבול.

    כדי להשבית התנהגות זו, ערוך את הקובץ Info.plist של פרויקט ה- Xcode והגדר את מפתח FirebaseDeepLinkPasteboardRetrievalEnabled ל- NO .

  1. בכרטיסיה מידע בפרויקט ה- Xcode של האפליקציה שלך, צור סוג URL חדש שישמש לקישורים דינמיים. הגדר את שדה מזהה לערך ייחודי ושדה ערכת כתובות האתרים יהיה מזהה החבילה שלך, המהווה את ערכת ברירת המחדל של כתובות אתרים המשמשת קישורים דינמיים.
  2. בכרטיסייה יכולות בפרויקט ה- Xcode של האפליקציה שלך, הפעל דומיינים משויכים והוסף את הדברים הבאים לרשימת הדומיינים המשויכים:
    applinks:your_dynamic_links_domain
  3. אם ברצונך לקבל קישורים דינמיים עם דומיין בהתאמה אישית מלאה , בקובץ Info.plist של פרויקט ה- Xcode שלך, צור מפתח בשם FirebaseDynamicLinksCustomDomains והגדר אותו לקידומות ה- URL של קישורים דינמיים של האפליקציה שלך. לדוגמא:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. ייבא את מודול Firebase ל- UIApplicationDelegate שלך:

    מָהִיר

    import Firebase

    מטרה-ג

    @import Firebase;
  5. הגדר תצורה של FirebaseApp משותף, בדרך כלל ביישום application:didFinishLaunchingWithOptions: שיטה:

    מָהִיר

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    מטרה-ג

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. לאחר מכן, application:continueUserActivity:restorationHandler: שיטה, התמודד עם קישורים שהתקבלו כקישורים אוניברסליים כאשר האפליקציה כבר מותקנת (ב- iOS 9 ואילך):

    מָהִיר

    func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
      let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
        // ...
      }
    
      return handled
    }

    מטרה-ג

    - (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;
    }
  7. לבסוף, application:openURL:sourceApplication:annotation: (iOS 8 ומעלה) application:openURL:options: (iOS 9 ואילך), מטפלים בקישורים שהתקבלו באמצעות ערכת ה- URL המותאמת אישית של האפליקציה שלכם. שיטות אלה נקראות כאשר האפליקציה שלך מקבלת קישור ב- iOS 8 ומעלה, וכאשר האפליקציה שלך נפתחת בפעם הראשונה לאחר ההתקנה על כל גרסה של iOS.

    אם הקישור הדינמי לא נמצא על ההשקה הראשונה של האפליקציה (על כל גרסה של iOS), שיטה זו תיקרא עם FIRDynamicLink של url סט כדי nil , המציין כי SDK הצליח למצוא התאמה ממתינה קישור דינמי.

    מָהִיר

    @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
    }

    מטרה-ג

    - (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;
    }