您可以使用 Firebase Dynamic Links Builder API 製作簡短或長的 Dynamic Links。 這個 API 接受長 Dynamic Link,或包含 Dynamic Link 的物件 參數,並傳回如下範例的網址:
https://example.com/link/WXYZ https://example.page.link/WXYZ
設定 Firebase 和 Dynamic Links SDK
如要在 Android 應用程式中建立 Dynamic Links,您必須先加入 Firebase SDK。如果應用程式已設為接收Dynamic Links,你已經 可以略過這部分
如果還沒試過 將 Firebase 新增至您的 Android 專案。
註冊應用程式時,請指定 SHA-1 簽署金鑰。如果您使用 應用程式連結,也會指定 SHA-256 金鑰。
-
在模組 (應用程式層級) Gradle 檔案中 (通常為
<project>/<app-module>/build.gradle.kts
或<project>/<app-module>/build.gradle
)、 新增 Android Dynamic Links 程式庫的依附元件。建議您使用 Firebase Android BoM敬上 管理程式庫版本管理為透過 Dynamic Links 獲得最佳體驗,建議你 正在啟用 Google Analytics ,然後將 Google Analytics 專用 Firebase SDK 加進應用程式。
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.2.0")) // Add the dependencies for the Dynamic Links and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links' implementation 'com.google.firebase:firebase-analytics' }
只要使用 Firebase Android BoM, 應用程式一律會使用相容的 Firebase Android 程式庫版本。
(替代做法) 新增 Firebase 程式庫依附元件,「不使用」 BoM
如果選擇不使用 Firebase BoM,請指定各個 Firebase 程式庫版本 都屬於依附元件行
請注意,如果您在應用程式中使用多個 Firebase 程式庫,強烈建議您 建議使用 BoM 管理程式庫版本,確保所有版本 相容。
敬上dependencies { // Add the dependencies for the Dynamic Links and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links:22.1.0' implementation 'com.google.firebase:firebase-analytics:22.1.0' }
- 在 Firebase 控制台中開啟「Dynamic Links」部分。
-
如果尚未接受服務條款並設定網域 請依提示操作。Dynamic Links
如果您已經擁有 Dynamic Links 網域,請記下該網域。您需要執行的操作 透過程式建立 Dynamic Links 時,請提供 Dynamic Links 網域。
- 建議:指定深層連結中允許的網址模式 和備用連結這樣就能防止未經授權的對象 建立 Dynamic Links,以便從你的網域重新導向至你無法控管的網站。 請參閱允許特定 網址模式。
使用 Firebase 控制台
產生單一Dynamic Link (用於測試用途或行銷團隊) 讓你不費吹灰之力建立連結 即可前往 Firebase 控制台 並按照逐步流程手動建立。
使用參數建立 Dynamic Link
如要建立 Dynamic Link,請建立新的 DynamicLink
物件,並使用該物件的
建構工具,使用 Builder 方法指定 Dynamic Link 參數。接著,呼叫
buildDynamicLink
或 buildShortDynamicLink
。
下列最簡單的範例會建立較長的 Dynamic Link,
在 Android 裝置上透過 Android 應用程式開啟的 https://www.example.com/
以及 iOS 上的 com.example.ios
應用程式:
Kotlin+KTX
val dynamicLink = Firebase.dynamicLinks.dynamicLink { link = Uri.parse("https://www.example.com/") domainUriPrefix = "https://example.page.link" // Open links with this app on Android androidParameters { } // Open links with com.example.ios on iOS iosParameters("com.example.ios") { } } val dynamicLinkUri = dynamicLink.uri
Java
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) .setDomainUriPrefix("https://example.page.link") // Open links with this app on Android .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build()) // Open links with com.example.ios on iOS .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build()) .buildDynamicLink(); Uri dynamicLinkUri = dynamicLink.getUri();
如要建立簡短的 Dynamic Link,請以相同的方式建構 DynamicLink
,然後
然後呼叫 buildShortDynamicLink
。如要建立短連結,需要具備
因此 請勿直接傳回連結
buildShortDynamicLink
會傳回 Task
,
要求執行完畢後可用的短連結例如:
Kotlin+KTX
val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync { link = Uri.parse("https://www.example.com/") domainUriPrefix = "https://example.page.link" // Set parameters // ... }.addOnSuccessListener { (shortLink, flowchartLink) -> // You'll need to import com.google.firebase.dynamiclinks.component1 and // com.google.firebase.dynamiclinks.component2 // Short link created processShortLink(shortLink, flowchartLink) }.addOnFailureListener { // Error // ... }
Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) .setDomainUriPrefix("https://example.page.link") // Set parameters // ... .buildShortDynamicLink() .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() { @Override public void onComplete(@NonNull Task<ShortDynamicLink> task) { if (task.isSuccessful()) { // Short link created Uri shortLink = task.getResult().getShortLink(); Uri flowchartLink = task.getResult().getPreviewLink(); } else { // Error // ... } } });
根據預設,系統會產生簡短的 Dynamic Links,其中包含 17 個字元的連結後置字串,
讓使用者猜測有效的 Dynamic Link。如果
就您的用途而言,有人成功猜到短連結並不會造成任何傷害
您可能會想要產生僅字數有限的字尾
不重複,方法是傳遞 ShortDynamicLink.Suffix.SHORT
改為 buildShortDynamicLink
方法:
Kotlin+KTX
val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) { // Set parameters // ... }
Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() // ... .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT); // ...
Dynamic Link 個參數
您可以使用 Dynamic Link Builder API,透過下列任一方式建立 Dynamic Links: 支援的參數。請參閱 API 參考資料。
下列範例會建立包含多個常見參數的 Dynamic Link 設定:
Kotlin+KTX
val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync link = Uri.parse("https://www.example.com/") domainUriPrefix = "https://example.page.link" androidParameters("com.example.android") { minimumVersion = 125 } iosParameters("com.example.ios") { appStoreId = "123456789" minimumVersion = "1.0.1" } googleAnalyticsParameters { source = "orkut" medium = "social" campaign = "example-promo" } itunesConnectAnalyticsParameters { providerToken = "123456" campaignToken = "example-promo" } socialMetaTagParameters { title = "Example of a Dynamic Link" description = "This link works whether the app is installed or not!" } }
Java
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) .setDomainUriPrefix("https://example.page.link") .setAndroidParameters( new DynamicLink.AndroidParameters.Builder("com.example.android") .setMinimumVersion(125) .build()) .setIosParameters( new DynamicLink.IosParameters.Builder("com.example.ios") .setAppStoreId("123456789") .setMinimumVersion("1.0.1") .build()) .setGoogleAnalyticsParameters( new DynamicLink.GoogleAnalyticsParameters.Builder() .setSource("orkut") .setMedium("social") .setCampaign("example-promo") .build()) .setItunesConnectAnalyticsParameters( new DynamicLink.ItunesConnectAnalyticsParameters.Builder() .setProviderToken("123456") .setCampaignToken("example-promo") .build()) .setSocialMetaTagParameters( new DynamicLink.SocialMetaTagParameters.Builder() .setTitle("Example of a Dynamic Link") .setDescription("This link works whether the app is installed or not!") .build()) .buildDynamicLink(); // Or buildShortDynamicLink()
您可以使用下列方法設定 Dynamic Link 參數:
DynamicLink 參數 | |
---|---|
setLink |
應用程式會開啟的連結。指定應用程式可處理的網址,通常是應用程式的內容 或酬載來啟動應用程式專屬的邏輯 (例如運用優待券或 顯示歡迎畫面)。此連結必須是格式正確的網址、採用正確的網址編碼,並使用 可使用 HTTP 或 HTTPS,且不能是其他動態連結 |
setDomainUriPrefix | Dynamic Link 網址前置字串,可在 Firebase 控制台中找到。A 罩杯
Dynamic Link 網域如下所示:
https://example.com/link https://example.page.link |
Android 參數 | |
---|---|
setFallbackUrl | 未安裝應用程式時開啟的連結。除了從 Play 商店安裝應用程式之外,您也可以指定上述操作以外的操作,例如開啟行動版網站內容,或顯示應用程式的宣傳頁面。 |
setMinimumVersion | 可開啟連結的應用程式最低版本 versionCode 。如果安裝的應用程式是較舊的版本,系統會引導使用者前往 Play 商店升級應用程式。 |
iOS 參數 | |
---|---|
setAppStore ID | 應用程式的 App Store ID,可在未安裝應用程式時將使用者導向 App Store |
setFallbackUrl | 未安裝應用程式時開啟的連結。除了從 App Store 安裝應用程式之外,請指定這項額外操作;例如,開啟行動版網站的內容,或顯示應用程式的宣傳頁面。 |
setCustomScheme | 應用程式的自訂網址通訊協定 (如果定義並非應用程式軟體包 ID) |
setIpadFallbackUrl | 未安裝應用程式時,在 iPad 上開啟的連結。除了從 App Store 安裝應用程式之外,請指定這項額外操作,例如開啟網頁內容或顯示應用程式的宣傳頁面。 |
setIpadBundleId | 要在 iPad 上開啟連結的 iOS 應用程式軟體包 ID。應用程式必須從 Firebase 控制台的「總覽」頁面連結至您的專案。 |
setMinimumVersion | 可開啟連結的應用程式最低版本版本號碼。此旗標會在應用程式開啟時傳遞至應用程式,因此應用程式必須決定使用方式。 |
NavigationInfo 參數 | |
---|---|
setForcedRedirectEnabled | 如果設為「1」,請在 Dynamic Link 開啟時略過應用程式預覽頁面,改為重新導向至應用程式或商店。使用者在應用程式中開啟 Dynamic Links 時,應用程式預覽頁面 (預設為啟用) 能以更可靠的方式將使用者帶往最適當的目的地;不過,如果您預期 Dynamic Link 只會在沒有這個頁面可順利開啟 Dynamic Links 的應用程式中開啟,則可使用這個參數停用。這個參數只會影響 Dynamic Link 在 iOS 上的行為。 |
SocialMetaTagParameters | |
---|---|
設定標題 | 在社群媒體貼文中分享 Dynamic Link 時使用的標題。 |
setDescription | 在社群媒體貼文中分享 Dynamic Link 時使用的說明。 |
setImageUrl | 這個連結相關圖片的網址。圖片不得小於 300x200 像素,小於 300 KB。 |
GoogleAnalytics 參數 | |
---|---|
setSource setMedium setCampaign setTerm setContent |
Google Play 數據分析參數。這些參數
(utm_source 、utm_medium 、
utm_campaign 、utm_term 、utm_content )
會傳遞至 Play 商店,也會附加至連結酬載。
|
ItunesConnectAnalyticsParameters | |
---|---|
setProviderToken setAffiliateToken setCampaignToken |
iTunes 連結數據分析參數。這些參數 (pt 、
at 、ct ) 會傳遞到 App Store。 |
縮短長的 Dynamic Link
如要縮短較長的 Dynamic Link,請使用以下項目指定 Dynamic Link 的網址:
setLongLink
,而非使用其他建構工具設定參數
方法:
Kotlin+KTX
val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync { longLink = Uri.parse( "https://example.page.link/?link=" + "https://www.example.com/&apn=com.example.android&ibn=com.example.ios", ) }.addOnSuccessListener { (shortLink, flowChartLink) -> // You'll need to import com.google.firebase.dynamiclinks.component1 and // com.google.firebase.dynamiclinks.component2 // Short link created processShortLink(shortLink, flowChartLink) }.addOnFailureListener { // Error // ... }
Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios")) .buildShortDynamicLink() .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() { @Override public void onComplete(@NonNull Task<ShortDynamicLink> task) { if (task.isSuccessful()) { // Short link created Uri shortLink = task.getResult().getShortLink(); Uri flowchartLink = task.getResult().getPreviewLink(); } else { // Error // ... } } });