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 memulai, 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, arahkan ke File > Add Packages .
  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Pilih pustaka Tautan Dinamis.
  5. Untuk pengalaman optimal dengan Dynamic Links, sebaiknya aktifkan Google Analytics di project 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 konsol Firebase , buka bagian Tautan Dinamis . Terima persyaratan layanan jika Anda diminta untuk melakukannya.
  2. Pastikan ID App Store aplikasi dan awalan ID Aplikasi Anda ditentukan di setelan aplikasi. Untuk melihat dan mengedit setelan aplikasi Anda, buka halaman Setelan project Firebase Anda dan pilih aplikasi iOS Anda.

    Anda dapat mengonfirmasi bahwa project Firebase Anda telah dikonfigurasi dengan benar untuk menggunakan Dynamic Links di aplikasi iOS 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 ID Aplikasi 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. Perhatikan bahwa awalan ID Aplikasi Anda mungkin tidak sama dengan ID Tim Anda.

  3. Opsional : Nonaktifkan penggunaan papan pengumuman iOS oleh Dynamic Links SDK.

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

    Sisi negatifnya adalah penggunaan papan tulis memicu pemberitahuan di iOS 14 dan yang lebih baru. Jadi, saat pertama kali pengguna membuka aplikasi Anda, jika papan tulis berisi URL, mereka akan melihat pemberitahuan bahwa aplikasi Anda telah mengakses papan tulis, 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 project Xcode aplikasi Anda, buat jenis URL baru yang akan digunakan untuk Dynamic Links. Setel bidang Pengenal ke nilai unik dan bidang skema URL menjadi pengenal bundel Anda, yang merupakan skema URL default yang digunakan oleh Dynamic Links.
  2. Di tab Kemampuan proyek Xcode aplikasi Anda, aktifkan Associated Domains dan tambahkan berikut ini ke daftar Associated Domains :
    applinks:your_dynamic_links_domain
  3. Jika Anda ingin menerima Tautan Dinamis dengan domain yang sepenuhnya khusus , dalam file Info.plist proyek Xcode Anda, buat kunci bernama FirebaseDynamicLinksCustomDomains dan setel ke awalan URL Tautan Dinamis aplikasi Anda. Misalnya:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Impor modul FirebaseCore di UIApplicationDelegate Anda, serta modul Firebase lainnya yang digunakan oleh delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Authentication:

    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: tangani 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 disetel ke nil , yang menunjukkan bahwa SDK gagal menemukan Dynamic Link pencocokan yang tertunda.

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