您可以使用 Firebase Dynamic Links Builder API 建立短或長的 Dynamic Links。 這個 API 接受長的動態連結,或包含動態連結的物件 參數,並傳回如下範例的網址:
https://example.com/link/WXYZ https://example.page.link/WXYZ
事前準備
開始之前,請務必將 Firebase 新增至 iOS 專案。
設定 Firebase 和 Dynamic Links SDK
使用 Swift Package Manager 安裝及管理 Firebase 依附元件。
- 在 Xcode 中保持開啟應用程式專案,然後依序選擇 [檔案] >新增套件。
- 在系統提示時,新增 Firebase Apple 平台 SDK 存放區:
- 選擇 Dynamic Links 程式庫。
- 在目標建構設定的「Other Linker Flags」部分中新增
-ObjC
標記。 - 為了獲得最佳的 Dynamic Links 使用體驗,建議您 啟用 Google Analytics ,然後將 Google Analytics 專用 Firebase SDK 加進應用程式。你可以 選取沒有收集廣告識別碼 (IDFA) 或收集廣告識別碼的程式庫。
- 完成後,Xcode 會自動開始解析並下載 複製到背景依附元件
https://github.com/firebase/firebase-ios-sdk.git
現在,請執行一些設定步驟:
- 在 Firebase 控制台中開啟「Dynamic Links」部分。
-
您尚未接受服務條款,並設定了 URI 前置字串 並在系統提示時進行這項操作。
如果您已經有 Dynamic Links URI 前置字串,請加以記下。您需要執行的操作 只會在您以程式輔助的方式建立 Dynamic Links 時提供此服務
- 建議:指定深層連結中允許的網址模式 和備用連結這樣就能防止未經授權的對象 建立 Dynamic Links,從你的網域重新導向至你無法控管的網站。 請參閱允許特定 網址模式。
-
請確保應用程式的 App Store ID,且應用程式 ID 前置字串為 您在應用程式的設定中指定。如要查看及編輯應用程式設定,請前往 連結至 Firebase 專案的 「設定」頁面,然後選取您的 iOS 應用程式。
確認您的 Firebase 專案已正確設定,可使用 如要在 iOS 應用程式中使用 Dynamic Links,請前往
apple-app-site-association
檔案是由您的 Dynamic Links 網域。Firebase 會放送 根層級的apple-app-site-association
檔案 以及.well-known
子目錄。適用對象 範例:https://example.com/apple-app-site-association https://example.com/.well-known/apple-app-site-association
如果應用程式已連線,則
apple-app-site-association
檔案會包含參照 改成應用程式的應用程式 ID 前置字串和軟體包 ID。例如:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
如果
details
屬性為空白,請再次檢查是否指定 您的應用程式 ID 前置字串。請注意,您的應用程式 ID 前置字串可能與團隊 ID 不同。
將 Firebase 新增至應用程式
- 將
FirebaseCore
模組匯入至UIApplicationDelegate
和任何其他 應用程式委派所用的 Firebase 模組。 例如,如要使用 Cloud Firestore 和驗證功能:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- 設定
FirebaseApp
敬上 共用執行個體application(_:didFinishLaunchingWithOptions:)
方法: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];
- 如果您使用 SwiftUI,則必須建立並附加應用程式委派
透過
UIApplicationDelegateAdaptor
或App
NSApplicationDelegateAdaptor
。您也必須停用應用程式委派功能切換功能。適用對象 詳情請參閱 SwiftUI 操作說明。SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
使用 Firebase 控制台
產生單一動態連結 (用於測試目的或行銷團隊) 讓你不費吹灰之力建立連結 前往 Firebase 控制台 並按照逐步流程手動建立。
使用 iOS Builder API
您可以使用 iOS Builder API 從參數建立 Dynamic Links,或 縮短長的動態連結。
根據參數建立動態連結
如要建立動態連結,請建立新的 DynamicLinkComponents
物件
並指定動態連結參數,方法是設定物件的
資源。接著,從物件的 url
取得長連結
屬性,或呼叫 shorten()
取得短連結。
以下範例最簡單的範例會建立長的動態連結,
透過 iOS 應用程式開啟的https://www.example.com/my-page
iOS 和 Android 上的 com.example.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);
如要建立短版動態連結,請建立 DynamicLinkComponents
然後呼叫 shorten()
建立短連結需要進行網路呼叫,而非直接建立
傳回連結,shorten()
會接受完成處理常式,
要求完成後,系統就會呼叫此方法。例如:
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); }];
根據預設,系統會產生簡短的動態連結,其中包含 17 個字元的連結後置字串,
讓使用者不太可能猜到有效的動態連結。如果
就您的用途而言,有人成功猜到短連結並不會造成任何傷害
您可能會想要產生僅字數有限的字尾
這時只要設定
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); }];
動態連結參數
您可以使用 Dynamic Link Builder API,透過下列任一方式建立 Dynamic Links 支援的參數。詳情請參閱 API 參考資料。
下列範例使用數個常見參數建立動態連結 設定:
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);
您可以利用下列物件和屬性設定 Dynamic Link 參數:
DynamicLinkComponents | |
---|---|
連結 |
應用程式會開啟的連結。指定應用程式可處理的網址,通常是應用程式的內容 或酬載來啟動應用程式專屬的邏輯 (例如運用優待券或 顯示歡迎畫面)。此連結必須是格式正確的網址、採用正確的網址編碼,並使用 可使用 HTTP 或 HTTPS,且不能是其他動態連結 |
網域 URIPrefix | 動態連結網址前置字串,可在 Firebase 控制台中找到。A 罩杯
Dynamic Link 網域範例如下:
https://example.com/link https://example.page.link |
DynamicLinkAndroid 參數 | |
---|---|
備用網址 | 未安裝應用程式時開啟的連結。除了從 Play 商店安裝應用程式之外,您也可以指定上述操作以外的操作,例如開啟行動版網站內容,或顯示應用程式的宣傳頁面。 |
最低版本 | 可開啟連結的應用程式最低版本 versionCode 。如果安裝的應用程式是較舊的版本,系統會引導使用者前往 Play 商店升級應用程式。 |
DynamicLinkIOS 參數 | |
---|---|
應用程式商店 ID | 應用程式的 App Store ID,可在未安裝應用程式時將使用者導向 App Store |
備用網址 | 未安裝應用程式時開啟的連結。除了從 App Store 安裝應用程式之外,請指定這項額外操作;例如,開啟行動版網站的內容,或顯示應用程式的宣傳頁面。 |
自訂配置 | 應用程式的自訂網址通訊協定 (如果定義並非應用程式軟體包 ID) |
iPadFallbackURL | 未安裝應用程式時,在 iPad 上開啟的連結。除了從 App Store 安裝應用程式之外,請指定這項額外操作,例如開啟網頁內容或顯示應用程式的宣傳頁面。 |
iPadBundleID | 要在 iPad 上開啟連結的 iOS 應用程式軟體包 ID。應用程式必須在 Firebase 控制台的「總覽」頁面中,連結至您的專案。 |
最低應用程式版本 | 可開啟連結的應用程式最低版本版本號碼。此旗標會在應用程式開啟時傳遞至應用程式,因此應用程式必須決定使用方式。 |
DynamicLinkNavigationInfoParameters | |
---|---|
forcedRedirectEnabled | 如果設為「1」,請在開啟動態連結時略過應用程式預覽頁面,改為重新導向至應用程式或商店。使用者在應用程式中開啟 Dynamic Links 時,應用程式預覽頁面 (預設為啟用) 能以更可靠的方式將使用者帶往最適當的目的地;不過,如果您認為只有在應用程式不必透過這個頁面也能順利開啟 Dynamic Links 應用程式,才會開啟 Dynamic Links,使用這個參數即可將其停用。這個參數只會影響 iOS 上的 Dynamic Links 行為。 |
DynamicLinkSocialMetaTagParameters | |
---|---|
名稱 | 在社群媒體貼文中分享 Dynamic Link 時使用的標題。 |
說明文字 | 在社群媒體貼文中分享 Dynamic Link 時使用的說明。 |
圖片網址 | 這個連結相關圖片的網址。圖片不得小於 300x200 像素,小於 300 KB。 |
DynamicLinkGoogleAnalyticsParameters | |
---|---|
來源 媒介 廣告活動 字詞 內容 |
Google Play 數據分析參數。這些參數
(utm_source 、utm_medium 、
utm_campaign 、utm_term 、utm_content )
會傳遞至 Play 商店,也會附加至連結酬載。
|
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
providerToken affiliateToken campaignToken |
iTunes 連結數據分析參數。這些參數 (pt 、
at 、ct ) 會傳遞到 App Store。 |
縮短完整動態連結
如要縮短長的動態連結,請將完整動態連結傳送至
「shortenURL(url:options:)
」以及
DynamicLinkComponentsOptions
物件,如要產生
含短後置字串的連結:
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); }];
為 Dynamic Links 指定自訂網址通訊協定
根據預設,Dynamic Links 會使用應用程式的軟體包 ID 做為開啟應用程式所需的網址通訊協定 應用程式。建議您沿用這個預設值,讓實作方式較為簡單。
不過,如果開發人員已基於其他用途使用自訂網址通訊協定,可能會希望 和動態連結一樣的自訂網址通訊協定。遇到這種情況時,您可以指定 請按照下列步驟,為 Firebase 動態連結設定不同的網址配置:
- 設定應用程式時,請務必指定應用程式要使用的預設網址通訊協定
再設定
FirebaseApp
共用執行個體:Swift
注意:這項 Firebase 產品不適用於 macOS、Mac Catalyst、tvOS 或 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
注意:這項 Firebase 產品不適用於 macOS、Mac Catalyst、tvOS 或 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; }
- 每當建立「動態連結」時,您都必須指定該網址的通訊協定
應用程式使用方式。方法是透過 Firebase 控制台,在 Builder API 中設定
customScheme
。 指定網址中的ius
參數,或將iosCustomScheme
參數傳送給 REST API
後續步驟
建立 Dynamic Links 後,接著需要設定應用程式才能接收 Dynamic Links :在使用者開啟應用程式後,將他們帶往應用程式中的正確位置。
如要在應用程式中接收 Dynamic Links,請參閱 iOS、 Android、 C++ 和 Unity: