Membuat Dynamic Links di iOS

Anda dapat membuat Dynamic Link pendek atau panjang dengan Firebase Dynamic Links Builder API. API ini menerima Dynamic Link panjang atau objek yang berisi parameter Dynamic Link, serta menampilkan URL seperti contoh berikut ini:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Prasyarat

Firebase Dynamic Links memerlukan iOS 8 atau yang lebih baru. Anda dapat menargetkan iOS 7 di aplikasi Anda, namun Firebase Dynamic Links SDK hanya memanggil fungsi pada aplikasi yang menjalankan 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/Core'
    pod 'Firebase/DynamicLinks'
        
  2. Jalankan pod install dan buka file .xcworkspace yang telah dibuat.
  3. Di Firebase console, buka bagian Dynamic Links.
  4. Jika Anda belum menyetujui persyaratan layanan dan menetapkan awalan URI untuk Dynamic Links, lakukanlah saat diminta.

    Jika Anda sudah memiliki awalan URI Dynamic Links, catatlah. Anda harus menyediakan awalan tersebut ketika membuat Dynamic Links secara terprogram.

  5. Direkomendasikan: Tentukan pola URL yang diizinkan di deep link dan link fallback. Dengan begitu, Anda akan mencegah pihak yang tidak diberi otorisasi agar tidak membuat Dynamic Links, yang mengalihkan pengguna dari domain Anda ke situs yang tidak Anda kontrol. Pelajari Pola URL yang diizinkan.
  6. Pastikan ID App Store dan awalan ID Aplikasi untuk aplikasi Anda sudah ditentukan di setelan aplikasi. Untuk melihat dan mengedit setelan aplikasi Anda, buka halaman Setelan project Firebase, lalu pilih aplikasi iOS Anda.

    Konfirmasikan bahwa project Firebase Anda dikonfigurasi dengan benar agar dapat menggunakan Dynamic Links di aplikasi iOS Anda, dengan membuka file apple-app-site-association yang dihosting di domain Dynamic Links Anda. Misalnya:

    https://example.com/apple-app-site-association

    Jika aplikasi Anda sudah terhubung, file apple-app-site-association akan berisi referensi ke ID App Store dan ID paket aplikasi Anda. Misalnya:

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

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

Menambahkan Firebase ke aplikasi Anda

  1. Impor modul Firebase di UIApplicationDelegate Anda:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  2. Konfigurasikan instance bersama FirebaseApp, yang biasanya ada dalam metode application:didFinishLaunchingWithOptions: aplikasi Anda:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    

Menggunakan Firebase console

Jika Anda ingin membuat Dynamic Link tunggal, baik untuk tujuan pengujian, atau agar tim pemasaran Anda dapat dengan mudah membuat link untuk digunakan pada sesuatu, seperti postingan media sosial, cara yang paling mudah adalah dengan mengunjungi Firebase console dan membuatnya secara manual dengan mengikuti petunjuk langkah demi langkah.

Menggunakan iOS Builder API

Anda dapat menggunakan iOS Builder API untuk membuat Dynamic Link dari parameter, atau untuk menyingkat Dynamic Link yang panjang.

Membuat Dynamic Link dari parameter

Untuk membuat Dynamic Link, buat objek DynamicLinkComponents baru dan tentukan parameter Dynamic Link dengan menyetel properti objek yang sesuai. Kemudian, dapatkan link panjang dari properti url objek atau dapatkan link pendek dengan memanggil shorten().

Contoh minimal berikut membuat Dynamic Link panjang ke https://www.example.com/my-page yang terbuka dengan aplikasi iOS Anda di iOS dan aplikasi com.example.android di Android:

Swift

guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix)
linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Objective-C

NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                               domainURIPrefix:dynamicLinksDomainURIPrefix];
linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];

NSLog(@"The long URL is: %@", linkBuilder.url);

Untuk membuat Dynamic Link pendek, buat DynamicLinkComponents dengan cara yang sama, lalu panggil shorten().

Diperlukan panggilan jaringan untuk membuat link pendek. Jadi, shorten() menerima pengendali penyelesaian yang dipanggil saat permintaan selesai, dan tidak langsung mengembalikan link. Misalnya:

Swift

linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Secara default, Dynamic Link pendek dihasilkan dengan akhiran link 17 karakter, sehingga tidak ada yang bisa menebak Dynamic Link yang valid. Jika, untuk kasus penggunaan Anda, tidak ada risiko bahaya saat seseorang berhasil menebak link pendek, Anda dapat membuat akhiran tidak terlalu panjang asalkan unik, yang dapat Anda lakukan dengan menyetel properti dynamicLinkComponentsOptions:

Swift

linkBuilder.dynamicLinkComponentsOptions = DynamicLinkComponentsOptions()
linkBuilder.dynamicLinkComponentsOptions.pathLength = .short
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init];
linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort;
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Parameter Dynamic Link

Anda dapat menggunakan Dynamic Link Builder API untuk membuat Dynamic Link dengan parameter apa pun yang didukung. Lihat referensi API untuk mengetahui detailnya.

Contoh berikut membuat Dynamic Link dengan penetapan beberapa parameter umum:

Swift

guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix)

linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.iOSParameters.appStoreID = "123456789"
linkBuilder.iOSParameters.minimumAppVersion = "1.2.3"

linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")
linkBuilder.androidParameters.minimumVersion = 123

linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut",
                                                                       medium: "social",
                                                                       campaign: "example-promo")

linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters()
linkBuilder.iTunesConnectParameters.providerToken = "123456"
linkBuilder.iTunesConnectParameters.campaignToken = "example-promo"

linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters()
linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link"
linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!"
linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg"

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Objective-C

NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                         domainURIPrefix:dynamicLinksDomainURIPrefix];

linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.iOSParameters.appStoreID = @"123456789";
linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3";

linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];
linkBuilder.androidParameters.minimumVersion = 123;

linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc]
                                   initWithSource:@"orkut"
                                           medium:@"social"
                                         campaign:@"example-promo"];

linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init];
linkBuilder.iTunesConnectParameters.providerToken = @"123456";
linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo";

linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init];
linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link";
linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!";
linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg";

NSLog(@"The long URL is: %@", linkBuilder.url);

Anda dapat menetapkan parameter Dynamic Link dengan objek dan properti berikut:

DynamicLinkComponents
link

Link yang dibuka aplikasi Anda. Tentukan URL yang dapat ditangani aplikasi Anda, biasanya konten atau payload aplikasi, yang memulai logika khusus aplikasi (seperti memberikan kredit kepada pengguna dengan kupon atau menampilkan layar sambutan). Link ini harus berupa URL yang diformat dengan baik, dienkode URL dengan benar, menggunakan HTTP atau HTTPS, dan bukan Dynamic Link lain.

domainURIPrefix Awalan URL Dynamic Link Anda yang dapat ditemukan di Firebase console. Domain Dynamic Link akan tampak seperti contoh berikut:

https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters
fallbackURL Link untuk dibuka jika aplikasi belum diinstal. Tentukan link ini untuk melakukan sesuatu selain menginstal aplikasi Anda dari Play Store jika aplikasi belum diinstal, seperti membuka konten versi web seluler atau menampilkan halaman promosi untuk aplikasi Anda.
minimumVersion versionCode dari versi minimum aplikasi Anda yang dapat membuka link tersebut. Jika aplikasi yang diinstal adalah versi yang lebih lama, pengguna akan dibawa ke Play Store untuk mengupgrade aplikasi tersebut.
DynamicLinkIOSParameters
appStoreID ID App Store aplikasi Anda yang digunakan untuk mengirim pengguna ke App Store jika aplikasi belum diinstal.
fallbackURL Link untuk dibuka jika aplikasi belum diinstal. Tentukan link ini untuk melakukan sesuatu selain menginstal aplikasi Anda dari App Store jika aplikasi belum diinstal, seperti membuka konten versi web seluler atau menampilkan halaman promosi untuk aplikasi Anda.
customScheme Skema URL khusus aplikasi Anda jika ditentukan sebagai sesuatu selain ID paket aplikasi Anda.
iPadFallbackURL Link untuk dibuka di iPad jika aplikasi belum diinstal. Tentukan link ini untuk melakukan sesuatu selain menginstal aplikasi Anda dari App Store jika aplikasi belum diinstal, seperti membuka konten versi web atau menampilkan halaman promosi untuk aplikasi Anda.
iPadBundleID ID paket aplikasi iOS yang digunakan di iPad untuk membuka link. Aplikasi tersebut harus terhubung ke project Anda dari halaman Ringkasan Firebase console.
minimumAppVersion Nomor versi dari versi minimum aplikasi Anda yang dapat membuka link. Tanda ini diteruskan ke aplikasi Anda saat aplikasi dibuka, dan aplikasi Anda harus menentukan tindakan untuk tanda tersebut.
DynamicLinkNavigationInfoParameters
forcedRedirectEnabled Jika diset ke '1', halaman pratinjau aplikasi akan dilompati saat Dynamic Link dibuka dan pengguna akan diarahkan kembali ke aplikasi atau toko. Halaman pratinjau aplikasi (secara default diaktifkan) lebih andal dalam mengarahkan pengguna ke tujuan yang paling sesuai saat mereka membuka Dynamic Link di aplikasi; namun, jika Anda ingin Dynamic Link hanya dibuka di aplikasi yang dapat membuka Dynamic Link dengan andal tanpa halaman ini, Anda dapat menonaktifkannya dengan parameter ini. Catatan: saat ini, halaman pratinjau aplikasi hanya ditampilkan di iOS, tetapi nantinya akan ditampilkan di Android. Parameter ini akan memengaruhi perilaku Dynamic Link pada kedua platform tersebut.
DynamicLinkSocialMetaTagParameters
judul Judul yang digunakan ketika Dynamic Link dibagikan di postingan sosial.
descriptionText Deskripsi yang digunakan ketika Dynamic Link dibagikan di postingan sosial.
imageURL URL ke gambar yang terkait link ini. Ukuran gambar minimal harus 300x200 piksel, dan kurang dari 300 KB.
DynamicLinkGoogleAnalyticsParameters
source
medium
campaign
term
content
Parameter analisis Google Play. Parameter (utm_source, utm_medium, utm_campaign, utm_term, utm_content) ini diteruskan ke Play Store dan juga ditambahkan ke payload link.
DynamicLinkItunesConnectAnalyticsParameters
providerToken
affiliateToken
campaignToken
Parameter analisis iTunes Connect. Parameter (pt, at, ct) ini diteruskan ke App Store.

Mempersingkat Dynamic Link panjang

Untuk menyingkat Dynamic Link panjang, teruskan Dynamic Link panjang ke shortenURL(url:options:) bersama dengan objek DynamicLinkComponentsOptions jika Anda ingin membuat link dengan akhiran yang pendek:

Swift

DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

[FIRDynamicLinkComponents shortenURL:longLinkUrl
                             options:nil
                          completion:^(NSURL * _Nullable shortURL,
                                       NSArray<NSString *> * _Nullable warnings,
                                       NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];

Menentukan skema URL kustom untuk Dynamic Links

Secara default, Dynamic Links menggunakan ID paket aplikasi Anda sebagai skema URL yang diperlukan untuk membuka aplikasi Anda. Sebaiknya terus gunakan nilai default ini untuk menyederhanakan implementasi Anda.

Namun, developer yang telah menggunakan skema URL kustom untuk tujuan lain mungkin juga ingin menggunakan skema URL kustom yang sama untuk Dynamic Links mereka. Jika Anda berada dalam situasi ini, Anda dapat menentukan skema URL berbeda untuk Firebase Dynamic Links dengan mengikuti langkah-langkah berikut:

  1. Saat menyiapkan aplikasi Anda, pastikan Anda menentukan skema URL default yang akan digunakan oleh aplikasi Anda sebelum mengonfigurasikan instance bersama FirebaseApp:

    Swift

    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      FirebaseOptions.defaultOptions()?.deepLinkURLScheme = self.customURLScheme
      FirebaseApp.configure()
    
      return true
    }

    Objective-C

    - (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME;
      [FIRApp configure];
    
      return YES;
    }
  2. Setiap kali membuat Dynamic Link, Anda perlu menentukan skema URL kustom yang digunakan oleh aplikasi Anda. Anda dapat melakukannya melalui Firebase console, dengan menetapkan customScheme di Builder API, yang menentukan parameter ius di URL Anda, atau mengirim parameter iosCustomScheme ke REST API

Langkah berikutnya

Setelah membuat Dynamic Link, Anda perlu menyiapkan aplikasi Anda untuk menerima Dynamic Link dan mengirim pengguna ke tempat yang tepat dalam aplikasi Anda setelah mereka membukanya.

Untuk menerima Dynamic Link di aplikasi Anda, baca dokumentasi untuk iOS, Android, C++, dan Unity.

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.