پیوندهای پویا را در iOS دریافت کنید

برای دریافت فایربیس پویا لینک هایی که شما ایجاد ، شما باید پویا لینک SDK در برنامه شما را شامل و تماس handleUniversalLink: و dynamicLinkFromCustomSchemeURL: روش هنگامی که بارهای برنامه خود را برای دریافت داده ها به تصویب رسید در پیوند پویا.

پیش نیازها

قبل از شروع، مطمئن شوید که به اضافه فایربیس به پروژه های iOS خود را .

  1. اضافه کردن فایربیس به پروژه های iOS خود را .
  2. شامل غلاف زیر را در خود Podfile :
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
  3. اجرای pod install و باز کردن ایجاد .xcworkspace فایل.
  4. در فایربیس کنسول ، باز کردن بخش پویا لینک. اگر از شما خواسته شد شرایط خدمات را بپذیرید.
  5. اطمینان حاصل کنید که شناسه App Store برنامه و پیش شماره برنامه App شما در تنظیمات برنامه شما مشخص شده است. برای مشاهده و ویرایش تنظیمات برنامه خود را، به پروژه فایربیس خود بروید صفحه تنظیمات و برنامه iOS خود را انتخاب کنید.

    با باز کردن آدرس زیر می توانید تأیید کنید که پروژه Firebase شما به درستی پیکربندی شده است تا از Dynamic Links در برنامه iOS شما استفاده کند:

    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 خود را مشخص شده است. توجه داشته باشید که پیش شماره برنامه ID شما ممکن است با شناسه تیم شما یکسان نباشد.

  6. اختیاری: استفاده غیر فعال کردن پویا لینک SDK از کارت ویزیت IOS.

    به طور پیش فرض ، Dynamic Links SDK از برگه برای بهبود قابلیت اطمینان پیوندهای عمیق پس از نصب استفاده می کند. با استفاده از صفحه چسبنی ، Dynamic Links می تواند مطمئن شود که هنگامی که یک کاربر یک Dynamic Link را باز می کند اما ابتدا باید برنامه شما را نصب کند ، هنگام باز کردن برنامه برای اولین بار پس از نصب ، کاربر می تواند بلافاصله به محتوای پیوند داده شده اصلی مراجعه کند.

    جنبه منفی این است که استفاده از تخته صفحات باعث ایجاد اعلان در iOS 14 و بالاتر می شود. بنابراین ، اولین باری که کاربران برنامه شما را باز می کنند ، اگر صفحه برگه حاوی URL Dynamic Link باشد ، اعلانی مبنی بر دسترسی برنامه شما به صفحه برگه مشاهده می کنند که می تواند باعث سردرگمی شود.

    برای غیر فعال کردن این رفتار، ویرایش پروژه Xcode متعلق به خود را 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. واردات ماژول فایربیس خود را 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;
    }