Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

iOS'ta Dinamik Bağlantılar Alın

O Firebase Dinamik Linkler almak için oluşturduğunuz , uygulamanızda Dinamik Linkler SDK dahildir ve çağırmalıdır handleUniversalLink: ve dynamicLinkFromCustomSchemeURL: uygulama yükler Dinamik Link iletilen verileri almak için yöntemler.

Önkoşullar

Başlamadan önce, emin olun iOS projeye Firebase ekleyin .

  1. İOS projeye Firebase ekleyin .
  2. Senin şu pod dahil Podfile :
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
  3. Çalıştır pod install ve oluşturulan açmak .xcworkspace dosyasını.
  4. In Firebase konsoluna , Dinamik Linkler bölümünü açın. Sizden istenirse hizmet şartlarını kabul edin.
  5. Uygulamanızın App Store Kimliği ve Uygulama Kimliği ön ekinizin uygulamanızın ayarlarında belirtildiğinden emin olun. Uygulamanızın ayarlarını görüntülemek ve düzenlemek için, Firebase projenin gidin Ayarları sayfasında ve iOS uygulamasını seçin.

    Aşağıdaki URL'yi açarak, Firebase projenizin iOS uygulamanızda Dinamik Bağlantıları kullanacak şekilde doğru şekilde yapılandırıldığını onaylayabilirsiniz:

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

    Uygulamanız bağlıysa, apple-app-site-association dosyası uygulamanızın App ID öneki ve grup kimliği olarak başvuru içeriyor. Örneğin:

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

    Eğer details alanı, App ID öneki belirtilen boş çift kontroldür. Uygulama Kimliği ön ekinizin Ekip Kimliğinizle aynı olmayabileceğini unutmayın.

  6. Opsiyonel: iOS Karton Devre Dışı Dinamik Linkler SDK'nın kullanılması.

    Varsayılan olarak, Dinamik Bağlantılar SDK'sı, yükleme sonrası derin bağlantıların güvenilirliğini artırmak için çalışma alanını kullanır. Dinamik Bağlantılar, çalışma alanını kullanarak, bir kullanıcı bir Dinamik Bağlantı açtığında ancak uygulamanızı yüklemesi gerektiğinde, kurulumdan sonra uygulamayı ilk kez açarken kullanıcının hemen orijinal bağlantılı içeriğe gidebilmesini sağlayabilir.

    Bunun dezavantajı, çalışma alanının kullanılmasının iOS 14 ve sonraki sürümlerde bir bildirimi tetiklemesidir. Bu nedenle, kullanıcılar uygulamanızı ilk kez açtıklarında, çalışma alanı bir Dinamik Bağlantı URL'si içeriyorsa, uygulamanızın çalışma alanına eriştiğine dair bir bildirim görürler ve bu da kafa karışıklığına neden olabilir.

    Düzenlemek Xcode projenin bu davranışı devre dışı bırakmak için Info.plist dosyasını ve set FirebaseDeepLinkPasteboardRetrievalEnabled anahtarı NO .

  1. Uygulamanızın Xcode projesinin Bilgi sekmesinde, Dinamik bağlantılar için kullanılacak yeni bir URL türü oluşturun. Dinamik Bağlantılar tarafından kullanılan varsayılan URL düzenidir sizin paket tanımlayıcı olmak için eşsiz bir değer ve URL şeması alanına Tanıtıcı alanını ayarlayın.
  2. Uygulamanızın Xcode projesinin Yetenekleri sekmesinde Associated Etki etkinleştirmek ve İlişkili Alanlar listesine aşağıdaki ekleyin:
    applinks:your_dynamic_links_domain
  3. Bir Dinamik Linkler almak istiyorsanız tam özel bir alan adına , Xcode projenin içinde Info.plist dosyasında, bir anahtar olarak adlandırılan oluşturmak FirebaseDynamicLinksCustomDomains ve uygulamanızın Dinamik Linkler URL öneki olarak ayarlayın. Örneğin:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Sizin de Firebase modülü içe UIApplicationDelegate :

    Süratli

    import Firebase

    Amaç-C

    @import Firebase;
  5. Yapılandırma bir FirebaseApp tipik uygulamanızın içinde, örnek paylaşılan application:didFinishLaunchingWithOptions: yöntemi:

    Süratli

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

    Amaç-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Sonra, içinde application:continueUserActivity:restorationHandler: yöntem, sap bağlantılar olarak alınan Evrensel Bağlantılar uygulaması zaten (iOS 9 ve daha yeni) yüklendiğinde:

    Süratli

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

    Amaç-C

    - (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. Son olarak, içinde application:openURL:sourceApplication:annotation: (iOS 8 ve üstü) ve application:openURL:options: (iOS 9 ve üstü) yöntemlerle, sap bağlantıları uygulamanızın özel URL şeması aracılığıyla alınan. Bu yöntemler, uygulamanız iOS 8 ve daha eski sürümlerde bir bağlantı aldığında ve herhangi bir iOS sürümüne yüklendikten sonra uygulamanız ilk kez açıldığında çağrılır.

    Devingen (iOS'un herhangi bir sürümüne üzerine) uygulamanızın ilk açılışta bulunmazsa, bu yöntem ile adı verilecek FIRDynamicLink 'in url için sette nil SDK Dinamik Linki bekleyen bir eşleştirme bulmak için başarısız olduğunu gösteren,.

    Süratli

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

    Amaç-C

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