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 dalam contoh berikut ini:
https://example.com/link/WXYZ https://example.page.link/WXYZ
Prasyarat
Sebelum memulai, pastikan untuk menambahkan Firebase ke project iOS Anda.
Menyiapkan Firebase dan Dynamic Links SDK
Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.
- Di Xcode, dengan project aplikasi Anda dalam keadaan terbuka, buka File > Add Packages.
- Saat diminta, tambahkan repositori SDK platform Apple Firebase:
- Pilih library Dynamic Links.
- Untuk mengoptimalkan penggunaan Dynamic Links, sebaiknya aktifkan Google Analytics di project Firebase dan tambahkan Firebase SDK untuk Google Analytics ke aplikasi Anda. Anda dapat memilih library tanpa atau dengan pengumpulan IDFA.
- Setelah selesai, Xcode akan otomatis mulai me-resolve dan mendownload dependensi Anda di latar belakang.
https://github.com/firebase/firebase-ios-sdk
Selanjutnya, lakukan beberapa langkah konfigurasi:
- Di Firebase console, buka bagian Dynamic Links.
-
Jika Anda belum menyetujui persyaratan layanan dan menetapkan awalan URI untuk Dynamic Link, lakukanlah saat diminta.
Jika Anda sudah memiliki awalan URI Dynamic Link, catatlah. Anda harus menyediakan awalan tersebut ketika membuat Dynamic Link secara terprogram.
- Direkomendasikan: Tentukan pola URL yang diizinkan di deep link dan link fallback. Dengan begitu, pihak yang tidak diberi otorisasi tidak dapat membuat Dynamic Link yang mengalihkan pengguna dari domain Anda ke situs yang tidak Anda kontrol. Baca artikel Mengizinkan pola URL tertentu.
-
Pastikan ID App Store dan awalan ID Aplikasi untuk aplikasi Anda sudah ditentukan di setelan aplikasi. Untuk melihat dan mengedit setelan aplikasi, buka halaman Settings project Firebase, lalu pilih aplikasi iOS Anda.
Pastikan bahwa project Firebase Anda dikonfigurasi dengan benar untuk menggunakan Dynamic Link di aplikasi iOS dengan membuka file
apple-app-site-association
yang dihosting di domain Dynamic Link Anda. Firebase akan menyalurkan fileapple-app-site-association
dari root domain tersebut serta subdirektori.well-known
. Contoh:https://example.com/apple-app-site-association https://example.com/.well-known/apple-app-site-association
Jika aplikasi Anda sudah terhubung, file
apple-app-site-association
berisi referensi ke awalan ID Aplikasi dan ID paket aplikasi Anda. Contoh:{"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 mungkin tidak sama dengan ID Tim Anda.
Menambahkan Firebase ke aplikasi
- Impor modul
FirebaseCore
dalamUIApplicationDelegate
Anda, serta semua modul Firebase lainnya yang digunakan oleh delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurasikan instance bersama
FirebaseApp
di metodeapplication(_:didFinishLaunchingWithOptions:)
delegasi aplikasi Anda:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Jika menggunakan SwiftUI, Anda harus membuat delegasi aplikasi dan menambahkannya ke struct
App
melaluiUIApplicationDelegateAdaptor
atauNSApplicationDelegateAdaptor
. Anda juga harus menonaktifkan swizzling delegasi aplikasi. Untuk mengetahui informasi lebih lanjut, baca petunjuk SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Menggunakan Firebase console
Jika Anda ingin membuat Dynamic Link tunggal, baik untuk tujuan pengujian maupun 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 lalu membuatnya secara manual dengan mengikuti petunjuk langkah demi langkah.
Menggunakan iOS Builder API
Anda dapat menggunakan iOS Builder API untuk mem-build 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 menetapkan 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, build 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 menampilkan link. Contoh:
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 sangat kecil kemungkinan ada yang bisa menebak Dynamic Link yang valid. Untuk kasus penggunaan Anda, jika tidak ada risiko kerugian bila seseorang berhasil menebak link pendek, Anda dapat membuat akhiran hanya sepanjang yang diperlukan agar link tersebut unik. Lakukan ini dengan menetapkan properti dynamicLinkComponentsOptions
:
Swift
linkBuilder.options = DynamicLinkComponentsOptions() linkBuilder.options.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 kupon kepada pengguna atau menampilkan layar sambutan). Link ini harus berupa URL yang diformat dengan baik, dienkode URL dengan benar, menggunakan HTTP atau HTTPS, dan bukan merupakan Dynamic Link lain. |
domainURIPrefix | Awalan URL Dynamic Link Anda yang dapat ditemukan di Firebase console. A
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. Jika aplikasi yang terinstal adalah versi yang lebih lama, pengguna akan diarahkan 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 kustom aplikasi Anda, jika ditentukan sebagai sesuatu selain ID paket aplikasi. |
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 Overview di Firebase console. |
minimumAppVersion | Nomor versi minimum aplikasi Anda yang dapat membuka link. Flag ini diteruskan ke aplikasi Anda saat aplikasi dibuka, dan aplikasi Anda harus menentukan tindakan terhadap flag tersebut. |
DynamicLinkNavigationInfoParameters | |
---|---|
forcedRedirectEnabled | Jika disetel ke '1', halaman pratinjau aplikasi akan diabaikan saat Dynamic Link dibuka dan pengguna akan dialihkan ke aplikasi atau toko. Halaman pratinjau aplikasi (secara default diaktifkan) dapat 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. Parameter ini hanya akan memengaruhi perilaku Dynamic Link di iOS. |
DynamicLinkSocialMetaTagParameters | |
---|---|
title | Judul yang digunakan ketika Dynamic Link dibagikan di postingan media sosial. |
descriptionText | Deskripsi yang digunakan ketika Dynamic Link dibagikan di postingan media 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 ini
(utm_source , utm_medium ,
utm_campaign , utm_term , utm_content )
diteruskan ke Play Store serta ditambahkan ke payload link.
|
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
providerToken affiliateToken campaignToken |
Parameter analisis iTunes Connect. Parameter ini (pt , at , ct ) 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 tersebut untuk Dynamic Links mereka. Jika Anda berada dalam situasi ini, Anda dapat menentukan skema URL berbeda untuk Firebase Dynamic Links dengan mengikuti langkah-langkah ini:
- Saat menyiapkan aplikasi, pastikan untuk menentukan skema URL default yang akan digunakan oleh aplikasi Anda
sebelum mengonfigurasi instance bersama
FirebaseApp
:Swift
Catatan: Produk Firebase ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.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 = customURLScheme FirebaseApp.configure() return true }
Objective-C
Catatan: Produk Firebase ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.- (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; }
- 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, menentukan parameterius
di URL, atau mengirimkan parameteriosCustomScheme
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.