Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Terima Tautan Dinamis di iOS

Untuk menerima Firebase Dynamic Links yang Anda buat , Anda harus menyertakan Dynamic Links SDK di aplikasi Anda dan memanggil metode handleUniversalLink: dan dynamicLinkFromCustomSchemeURL: saat aplikasi Anda dimuat untuk mendapatkan data yang diteruskan di Dynamic Link.

Prasyarat

Sebelum Anda mulai, pastikan untuk menambahkan Firebase ke proyek iOS Anda .

Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.

  1. Di Xcode, dengan proyek aplikasi Anda terbuka, navigasikan ke File > Add Packages .
  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Pilih perpustakaan Dynamic Links.
  5. Untuk pengalaman yang optimal dengan Dynamic Links, sebaiknya aktifkan Google Analytics di proyek Firebase Anda dan tambahkan Firebase SDK untuk Google Analytics ke aplikasi Anda. Anda dapat memilih perpustakaan tanpa koleksi IDFA atau dengan koleksi IDFA.
  6. Setelah selesai, Xcode akan secara otomatis mulai menyelesaikan dan mengunduh dependensi Anda di latar belakang.

Sekarang, lakukan beberapa langkah konfigurasi:

  1. Di Firebase console , buka bagian Dynamic Links . Terima persyaratan layanan jika Anda diminta untuk melakukannya.
  2. Pastikan ID App Store aplikasi Anda dan awalan ID Aplikasi Anda ditentukan dalam pengaturan aplikasi Anda. Untuk melihat dan mengedit setelan aplikasi Anda, buka halaman Setelan proyek Firebase dan pilih aplikasi iOS Anda.

    Anda dapat mengonfirmasi bahwa proyek Firebase Anda dikonfigurasi dengan benar untuk menggunakan Dynamic Links di aplikasi iOS Anda dengan membuka URL berikut:

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

    Jika aplikasi Anda terhubung, file apple-app-site-association berisi referensi ke awalan App ID dan ID bundel aplikasi Anda. Sebagai contoh:

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

    Jika bidang details kosong, periksa kembali apakah Anda telah menentukan awalan ID Aplikasi Anda. Perhatikan bahwa awalan ID Aplikasi Anda mungkin tidak sama dengan ID Tim Anda.

  3. Opsional : Nonaktifkan penggunaan Dynamic Links SDK atas papan tulis iOS.

    Secara default, Dynamic Links SDK menggunakan pasteboard untuk meningkatkan keandalan tautan dalam pasca pemasangan. Dengan menggunakan pasteboard, Dynamic Links dapat memastikan bahwa ketika pengguna membuka Dynamic Links tetapi perlu menginstal aplikasi Anda terlebih dahulu, pengguna dapat langsung membuka konten tertaut asli saat membuka aplikasi untuk pertama kali setelah penginstalan.

    Kelemahan dari ini adalah penggunaan papan tempel memicu pemberitahuan di iOS 14 dan yang lebih baru. Jadi, saat pertama kali pengguna membuka aplikasi Anda, jika papan tempel berisi URL, mereka akan melihat pemberitahuan bahwa aplikasi Anda mengakses papan tempel, yang dapat menyebabkan kebingungan.

    Untuk menonaktifkan perilaku ini, edit file Info.plist proyek Xcode Anda dan setel kunci FirebaseDeepLinkPasteboardRetrievalEnabled ke NO .

  1. Di tab Info proyek Xcode aplikasi Anda, buat jenis URL baru yang akan digunakan untuk Dynamic Links. Setel bidang Identifier ke nilai unik dan bidang skema URL menjadi pengidentifikasi bundel Anda, yang merupakan skema URL default yang digunakan oleh Dynamic Links.
  2. Di tab Kemampuan proyek Xcode aplikasi Anda, aktifkan Domain Terkait dan tambahkan yang berikut ini ke daftar Domain Terkait :
    applinks:your_dynamic_links_domain
  3. Jika Anda ingin menerima Dynamic Links dengan domain kustom penuh , dalam file Info.plist proyek Xcode Anda, buat kunci bernama FirebaseDynamicLinksCustomDomains dan setel ke awalan URL Dynamic Links aplikasi Anda. Misalnya:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Impor modul FirebaseCore di UIApplicationDelegate Anda, serta modul Firebase lain yang digunakan delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Otentikasi:

    Cepat

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  5. Konfigurasikan instance bersama FirebaseApp dalam metode application(_:didFinishLaunchingWithOptions:) delegasi aplikasi Anda:

    Cepat

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Selanjutnya, dalam metode application:continueUserActivity:restorationHandler: , tangani tautan yang diterima sebagai Tautan Universal saat aplikasi sudah diinstal:

    Cepat

    Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau 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
    }
    

    Objective-C

    Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau 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. Terakhir, di application:openURL:options: menangani tautan yang diterima melalui skema URL khusus aplikasi Anda. Metode ini dipanggil saat aplikasi Anda dibuka untuk pertama kali setelah penginstalan.

    Jika Dynamic Link tidak ditemukan pada peluncuran pertama aplikasi Anda, metode ini akan dipanggil dengan url DynamicLink yang disetel ke nil , yang menunjukkan bahwa SDK gagal menemukan Dynamic Link yang cocok.

    Cepat

    Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau 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
    }
    

    Objective-C

    Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau 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;
    }