Check out what’s new from Firebase at Google I/O 2022. Learn more

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

Oluşturduğunuz Firebase Dynamic Links'i almak için , Dynamic Links SDK'sını uygulamanıza eklemeniz ve uygulamanız yüklendiğinde handleUniversalLink: ve dynamicLinkFromCustomSchemeURL: yöntemlerini çağırarak verileri Dynamic Link'e iletmeniz gerekir.

Önkoşullar

Başlamadan önce , iOS projenize Firebase'i eklediğinizden emin olun.

Firebase bağımlılıklarını kurmak ve yönetmek için Swift Paket Yöneticisi'ni kullanın.

  1. Xcode'da, uygulama projeniz açıkken File > Add Packages seçeneğine gidin.
  2. İstendiğinde, Firebase Apple platformları SDK deposunu ekleyin:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Dinamik Bağlantılar kitaplığını seçin.
  5. Dynamic Links ile optimum deneyim için, Firebase projenizde Google Analytics'i etkinleştirmenizi ve Google Analytics için Firebase SDK'sını uygulamanıza eklemenizi öneririz. IDFA koleksiyonu olmayan veya IDFA koleksiyonu olan kütüphaneyi seçebilirsiniz.
  6. Bittiğinde, Xcode otomatik olarak bağımlılıklarınızı arka planda çözmeye ve indirmeye başlayacaktır.

Şimdi, bazı yapılandırma adımlarını gerçekleştirin:

  1. Firebase konsolunda , Dinamik Bağlantılar bölümünü açın. Sizden istenirse hizmet şartlarını kabul edin.
  2. 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 projenizin Ayarlar sayfasına gidin ve iOS uygulamanızı 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 Uygulama Kimliği önekine ve paket kimliğine bir referans içerir. Örneğin:

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

    details alanı boşsa, Uygulama Kimliği ön ekinizi belirttiğinizi bir kez daha kontrol edin. Uygulama Kimliği ön ekinizin Ekip Kimliğinizle aynı olmayabileceğini unutmayın.

  3. İsteğe bağlı : Dynamic Links SDK'sının iOS çalışma alanını kullanmasını devre dışı bırakın.

    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 URL 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.

    Bu davranışı devre dışı bırakmak için, Xcode projenizin Info.plist dosyasını düzenleyin ve FirebaseDeepLinkPasteboardRetrievalEnabled anahtarını NO olarak ayarlayın.

  1. Uygulamanızın Xcode projesinin Bilgi sekmesinde, Dinamik Bağlantılar için kullanılacak yeni bir URL türü oluşturun. Tanımlayıcı alanını benzersiz bir değere ve URL şeması alanını, Dinamik Bağlantılar tarafından kullanılan varsayılan URL şeması olan paket tanımlayıcınız olacak şekilde ayarlayın.
  2. Uygulamanızın Xcode projesinin Yetenekler sekmesinde, Associated Domains'i etkinleştirin ve aşağıdakileri Associated Domains listesine ekleyin:
    applinks:your_dynamic_links_domain
  3. Tamamen özel bir etki alanına sahip Dinamik Bağlantılar almak istiyorsanız, Xcode projenizin Info.plist dosyasında FirebaseDynamicLinksCustomDomains adlı bir anahtar oluşturun ve bunu uygulamanızın Dynamic Links URL öneklerine ayarlayın. Örneğin:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. UIApplicationDelegate FirebaseCore modülünü ve uygulama temsilcinizin kullandığı diğer Firebase modüllerini içe aktarın. Örneğin, Cloud Firestore ve Kimlik Doğrulamayı kullanmak için:

    Süratli

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Amaç-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  5. Genellikle uygulamanızın application:didFinishLaunchingWithOptions: yönteminde bir FirebaseApp paylaşılan örneği yapılandırın:

    Süratli

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

    Amaç-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Ardından, application:continueUserActivity:restorationHandler: yönteminde, uygulama zaten yüklendiğinde Evrensel Bağlantılar olarak alınan bağlantıları işleyin:

    Süratli

    Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
    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

    Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
    - (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, application:openURL:options: uygulamanızın özel URL şeması aracılığıyla alınan bağlantıları yönetin. Bu yöntem, kurulumdan sonra uygulamanız ilk kez açıldığında çağrılır.

    Uygulamanızın ilk lansmanında Dinamik Bağlantı bulunamazsa, bu yöntem, DynamicLink url nil olarak ayarlanmış olarak çağrılır ve bu, SDK'nın eşleşen bir bekleyen Dinamik Bağlantı bulamadığını gösterir.

    Süratli

    Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
    @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

    Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
    - (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;
    }