Buka konsol

Menerima Dynamic Links di iOS

Untuk menerima Firebase Dynamic Links yang Anda buat, Anda harus menyertakan Dynamic Links SDK dalam aplikasi yang dimiliki, dan memanggil metode handleUniversalLink: serta dynamicLinkFromCustomSchemeURL: ketika aplikasi tersebut dimuat agar data diteruskan dalam Dynamic Link.

Prasyarat

Firebase Dynamic Links memerlukan iOS 8 atau yang lebih baru. Anda dapat menargetkan iOS 7 di aplikasi, tetapi semua panggilan Firebase Dynamic Links SDK tidak akan berfungsi jika aplikasi tidak berjalan pada iOS 8 atau yang lebih baru.

Menyiapkan Firebase dan Dynamic Links SDK

  1. Tambahkan Firebase ke project iOS Anda. Sertakan pod berikut dalam Podfile Anda:
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
  2. Jalankan pod install lalu buka file .xcworkspace yang dibuat.
  3. Di Firebase console, buka bagian Dynamic Links. Setujui persyaratan layanan jika diminta.
  4. Pastikan ID App Store dan awalan ID Aplikasi untuk aplikasi Anda sudah ditentukan di setelan aplikasi. Untuk melihat dan mengedit setelan aplikasi, buka halaman Setelan project Firebase, lalu pilih aplikasi iOS Anda.

    Konfirmasikan bahwa project Firebase Anda sudah dikonfigurasi dengan tepat untuk menggunakan Dynamic Links di aplikasi iOS, dengan membuka URL berikut:

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

    Jika aplikasi Anda sudah terhubung, file apple-app-site-association akan memuat referensi ke awalan ID Aplikasi dan ID paket aplikasi. Misalnya:

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

    Jika kolom details kosong, pastikan Anda sudah menentukan awalan ID Aplikasi. Perlu diperhatikan bahwa awalan ID Aplikasi tidak boleh sama dengan ID Tim Anda.

Membuka Dynamic Links di aplikasi Anda

  1. Di tab Info pada project Xcode aplikasi Anda, buat jenis URL baru yang akan digunakan dengan Dynamic Links. Tetapkan kolom Identifier ke nilai yang unik dan kolom URL scheme ke ID paket, yang merupakan skema URL default yang digunakan oleh Dynamic Links.
  2. Di tab Capabilities pada project Xcode aplikasi Anda, aktifkan Domain Terkait lalu tambahkan hal berikut ini ke daftar Associated Domains:
    applinks:your_dynamic_links_domain
  3. Jika ingin menerima Dynamic Links dengan domain kustom lengkap, di file Info.plist project Xcode Anda, buat kunci dengan nama FirebaseDynamicLinksCustomDomains lalu tetapkan ke awalan URL Dynamic Links aplikasi Anda. Contoh:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Impor modul Firebase di UIApplicationDelegate Anda:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  5. Konfigurasikan instance bersama FirebaseApp, biasanya di metode application:didFinishLaunchingWithOptions: pada aplikasi Anda:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Selanjutnya, pada metode application:continueUserActivity:restorationHandler: , tangani link yang diterima sebagai Universal Links jika aplikasi sudah diinstal (pada iOS 9 dan yang lebih baru):

    Swift

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

    Objective-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. Terakhir, pada metode application:openURL:sourceApplication:annotation: (iOS 8 dan yang lebih lama) dan application:openURL:options: (iOS 9 dan yang lebih baru), tangani link yang diterima melalui skema URL kustom aplikasi Anda. Metode ini dipanggil ketika aplikasi menerima link pada iOS 8 dan yang lebih lama, serta ketika aplikasi dibuka untuk pertama kalinya setelah diinstal pada versi iOS mana pun.

    Jika Dynamic Link tidak ditemukan saat aplikasi Anda diluncurkan untuk pertama kalinya (pada versi iOS mana pun), metode ini akan dipanggil dengan url FIRDynamicLink ditetapkan ke nil, yang menunjukkan bahwa SDK gagal menemukan Dynamic Link tertunda yang cocok.

    Swift

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

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