Catch up on everything we announced at this year's Firebase Summit. Learn more

تلقي روابط ديناميكية على iOS

لاستقبال Firebase دينامية سريعة أن قمت بإنشائه ، يجب عليك تضمين الديناميكية سريعة SDK في التطبيق الخاص بك واستدعاء handleUniversalLink: و dynamicLinkFromCustomSchemeURL: طرق عند تحميل التطبيق الخاص بك للحصول على البيانات التي تم تمريرها في الارتباط الحيوي.

المتطلبات الأساسية

قبل البدء، تأكد من إضافة Firebase إلى المشروع الذي يعمل بنظام iOS .

استخدم Swift Package Manager لتثبيت وإدارة تبعيات Firebase.

  1. في كسكودي، مع مشروع التطبيق فتح، انتقل إلى ملف> حزم سويفت> إضافة حزمة التبعية.
  2. عند المطالبة ، قم بإضافة مستودع SDK لأنظمة Firebase Apple الأساسية:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. اختر مكتبة الروابط الديناميكية.
  5. للحصول على تجربة الأمثل مع دينامية سريعة، نوصي تمكين تحليلات جوجل في مشروع Firebase وإضافة SDK Firebase ل Google Analytics أن التطبيق الخاص بك. يمكنك تحديد المكتبة بدون مجموعة IDFA أو مع مجموعة IDFA.
  6. عند الانتهاء ، سيبدأ Xcode تلقائيًا في حل وتنزيل التبعيات الخاصة بك في الخلفية.

الآن ، قم بتنفيذ بعض خطوات التكوين:

  1. في وحدة التحكم Firebase ، فتح الباب الحيوي الوصلات. اقبل شروط الخدمة إذا طُلب منك ذلك.
  2. تأكد من تحديد معرف متجر التطبيقات الخاص بك وبادئة معرف التطبيق في إعدادات التطبيق. لعرض وتحرير إعدادات التطبيق الخاص بك، انتقل إلى مشروع Firebase الخاص بك صفحة إعدادات واختر التطبيق الذي يعمل بنظام iOS.

    يمكنك التأكد من تكوين مشروع Firebase الخاص بك بشكل صحيح لاستخدام الروابط الديناميكية في تطبيق iOS الخاص بك عن طريق فتح عنوان URL التالي:

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

    إذا كان متصلا التطبيق الخاص بك، و apple-app-site-association يحتوي ملف اشارة الى بادئة التطبيقات ID التطبيق ورمز الرزمة. على سبيل المثال:

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

    إذا كانت details الحقل فارغا، انقر نقرا مزدوجا الاختيار الذي حددته بادئة التطبيقات ID الخاص بك. لاحظ أن بادئة معرف التطبيق الخاص بك قد لا تكون هي نفسها معرّف الفريق الخاص بك.

  3. اختياري: استخدام تعطيل دينامية سريعة SDK من ورق مقوى دائرة الرقابة الداخلية.

    بشكل افتراضي ، تستخدم حزمة SDK للروابط الديناميكية لوحة اللصق لتحسين موثوقية الروابط العميقة بعد التثبيت. باستخدام لوحة اللصق ، يمكن للروابط الديناميكية التأكد من أنه عندما يفتح المستخدم رابطًا ديناميكيًا ولكنه يحتاج إلى تثبيت تطبيقك أولاً ، يمكن للمستخدم الانتقال فورًا إلى المحتوى المرتبط الأصلي عند فتح التطبيق لأول مرة بعد التثبيت.

    الجانب السلبي لهذا هو أن استخدام لوحة اللصق يؤدي إلى ظهور إشعار على نظام التشغيل iOS 14 والإصدارات الأحدث. لذلك ، في المرة الأولى التي يفتح فيها المستخدمون تطبيقك ، إذا كانت لوحة اللصق تحتوي على عنوان URL للرابط الديناميكي ، فسوف يرون إشعارًا بأن تطبيقك قد وصل إلى لوحة اللصق ، مما قد يتسبب في حدوث ارتباك.

    لتعطيل هذا السلوك، تحرير كسكودي بك المشروع Info.plist الملف وتعيين FirebaseDeepLinkPasteboardRetrievalEnabled مفتاح NO .

  1. في علامة التبويب معلومات من مشروع Xcode التطبيق الخاص بك، وخلق نوع URL جديد لاستخدامه لدينامية سريعة. تعيين الحقل معرف إلى قيمة فريدة وحقل مخطط URL أن يكون معرف الحزمة الخاصة بك، وهو مخطط URL الافتراضية المستخدمة من قبل الديناميكي الوصلات.
  2. في علامة التبويب قدرات من مشروع Xcode التطبيق الخاص بك، تمكين أسوشيتد المجالات وإضافة ما يلي إلى قائمة أسوشيتد مجالات:
    applinks:your_dynamic_links_domain
  3. إذا كنت ترغب في الحصول دينامية سريعة مع نطاق كامل مخصص ، في مشروع Xcode في Info.plist الملف، إنشاء مفتاح يسمى 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: طريقة، وصلات مقبض التي وردت العالمي سريعة عند تثبيت التطبيق بالفعل (على دائرة الرقابة الداخلية 9 و الأحدث):

    سويفت

    ملاحظة: هذا المنتج غير متوفر على ماك، ماك محفز، 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
    }
    

    ج موضوعية

    ملاحظة: هذا المنتج غير متوفر على ماك، ماك محفز، 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;
    }
  7. وأخيرا، في application:openURL:sourceApplication:annotation: (دائرة الرقابة الداخلية 8 وما فوق) و application:openURL:options: (دائرة الرقابة الداخلية 9 و متابعة) الطرق، وصلات مقبض وردت عن طريق مخطط URL مخصص التطبيق الخاص بك. يتم استدعاء هذه الطرق عندما يتلقى تطبيقك رابطًا على نظام التشغيل iOS 8 والإصدارات الأقدم ، وعندما يتم فتح التطبيق لأول مرة بعد التثبيت على أي إصدار من نظام التشغيل iOS.

    إذا لم يتم العثور على الارتباط الحيوي على إطلاق أول تطبيق الخاص بك (على أي نسخة من دائرة الرقابة الداخلية)، سيتم استدعاء هذا الأسلوب مع FIRDynamicLink الصورة url مجموعة إلى nil ، مشيرا إلى أن SDK فشل في العثور على مطابقة انتظار الارتباط الحيوي.

    سويفت

    ملاحظة: هذا المنتج غير متوفر على ماك، ماك محفز، 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
    }
    

    ج موضوعية

    ملاحظة: هذا المنتج غير متوفر على ماك، ماك محفز، 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;
    }