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

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

כדי לקבל את הקישורים הדינמיים של Firebase שיצרת , עליך לכלול את ה- SDK של קישורים דינמיים באפליקציה שלך ולהתקשר אל ה- handleUniversalLink: ו 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 מכיל התייחסות לקידומת מזהה האפליקציה של ה- app שלך ולמזהה הצרור. לדוגמא:

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

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

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

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

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

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

  1. בכרטיסייה מידע בפרויקט Xcode של היישום שלך, צור סוג URL חדש שישמש לקישורים דינמיים. הגדר את השדה ' מזהה' לערך ייחודי ואת שדה ערכת ה- URL להיות מזהה הצרור שלך, שהוא ערכת ה- 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 ומעלה), application:openURL:options: לקישורים שהתקבלו באמצעות ערכת ה- 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;
    }