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

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

پیش نیازها

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

برای نصب و مدیریت وابستگی های Firebase از Swift Package Manager استفاده کنید.

  1. در Xcode متعلق به، با پروژه برنامه خود را باز، حرکت به مسیر File> بسته سویفت> اضافه کردن بسته بندی وابستگی.
  2. هنگامی که از شما خواسته شد، مخزن SDK پلتفرم های Apple Firebase را اضافه کنید:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. کتابخانه پیوندهای پویا را انتخاب کنید.
  5. برای یک تجربه بهینه با پویا لینک ها، توصیه می کنیم قادر می سازد گوگل آنالیز در پروژه Firebase خود و اضافه کردن SDK فایربیس برای گوگل آنالیز برای برنامه شما. شما می توانید کتابخانه را بدون مجموعه IDFA یا با مجموعه IDFA انتخاب کنید.
  6. پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگی های شما در پس زمینه می کند.

اکنون چند مرحله پیکربندی را انجام دهید:

  1. در فایربیس کنسول ، باز کردن بخش پویا لینک. اگر از شما خواسته شد شرایط خدمات را بپذیرید.
  2. مطمئن شوید که شناسه App Store برنامه و پیشوند App ID شما در تنظیمات برنامه شما مشخص شده است. برای مشاهده و ویرایش تنظیمات برنامه خود را، به پروژه فایربیس خود بروید صفحه تنظیمات و برنامه iOS خود را انتخاب کنید.

    با باز کردن URL زیر می توانید تأیید کنید که پروژه 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":["NOT /_/*","/*"]}]}}

    اگر details زمینه خالی، دو چک که شما پیشوند برنامه ID خود را مشخص شده است. توجه داشته باشید که پیشوند شناسه برنامه شما ممکن است با شناسه تیم شما یکسان نباشد.

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

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

    نقطه ضعف این کار این است که استفاده از مقوا باعث ایجاد اعلان در iOS 14 به بعد می شود. بنابراین، اولین باری که کاربران برنامه شما را باز می‌کنند، اگر کارت‌برد حاوی URL پیوند پویا باشد، اعلانی مبنی بر دسترسی برنامه شما به کارت‌بورد مشاهده می‌کنند که می‌تواند باعث سردرگمی شود.

    برای غیر فعال کردن این رفتار، ویرایش پروژه 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

    هدف-C

    @import Firebase;
  5. پیکربندی FirebaseApp عنوان مثال مشترک، به طور معمول در برنامه شما application:didFinishLaunchingWithOptions: روش:

    سریع

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

    هدف-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. بعد، در application:continueUserActivity:restorationHandler: روش ها، لینک ها دسته دریافت شده به عنوان جهانی ها زمانی که برنامه در حال حاضر (در iOS 9 و جدیدتر) نصب شده:

    سریع

    نکته: این محصول در دسترس نیست در MacOS، مک کاتالیست، 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
    }
    

    هدف-C

    نکته: این محصول در دسترس نیست در MacOS، مک کاتالیست، 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: (سیستم عامل iOS 8 و بالاتر) و application:openURL:options: (سیستم عامل iOS 9 و بالاتر) روش ها، لینک ها دسته طریق طرح URL سفارشی برنامه خود را دریافت کرد. این روش‌ها زمانی فراخوانی می‌شوند که برنامه شما پیوندی را در iOS 8 و بالاتر دریافت کند، و زمانی که برنامه شما برای اولین بار پس از نصب در هر نسخه از iOS باز می‌شود.

    اگر پیوند پویا در راه اندازی اولین برنامه خود را یافت نشد (در هر نسخه از سیستم عامل iOS)، این روش خواهد شد با نام FIRDynamicLink را url مجموعه به nil ، نشان می دهد که SDK موفق به پیدا کردن یک تطابق در انتظار پیوند پویا.

    سریع

    نکته: این محصول در دسترس نیست در MacOS، مک کاتالیست، 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
    }
    

    هدف-C

    نکته: این محصول در دسترس نیست در MacOS، مک کاتالیست، 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;
    }