您可以使用 Firebase Dynamic Links Builder API 建立短或長的 Dynamic Links。 這個 API 接受長的動態連結,或包含動態連結的物件 參數,並傳回如下範例的網址:
https://example.com/link/WXYZ https://example.page.link/WXYZ
設定 Firebase 和 Dynamic Links SDK
您必須先將 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.1.2")) // 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.0.2' }
- 在 Firebase 控制台中開啟「Dynamic Links」部分。
-
如果尚未接受服務條款並設定網域 並在系統提示時進行這項操作。
如果您已經有 Dynamic Links 網域,請加以記下。您需要執行的操作 會在您透過程式建立 Dynamic Links 時提供 Dynamic Links 網域。
- 建議:指定深層連結中允許的網址模式 和備用連結這樣就能防止未經授權的對象 建立 Dynamic Links,從你的網域重新導向至你無法控管的網站。 請參閱允許特定 網址模式。
使用 Firebase 控制台
產生單一動態連結 (用於測試目的或行銷團隊) 讓你不費吹灰之力建立連結 前往 Firebase 控制台 並按照逐步流程手動建立。
根據參數建立動態連結
如要建立動態連結,請建立新的 DynamicLink
物件,並設定其
建立工具,使用建構工具指定 Dynamic Link 參數。接著,呼叫
buildDynamicLink
或 buildShortDynamicLink
。
以下範例最簡單的範例會建立長的動態連結,
在 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();
如要建立短版動態連結,請以相同方式建立 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 // ... } } });
根據預設,系統會產生簡短的動態連結,其中包含 17 個字元的連結後置字串,
讓使用者不太可能猜到有效的動態連結。如果
就您的用途而言,有人成功猜到短連結並不會造成任何傷害
您可能會想要產生僅字數有限的字尾
不重複,方法是傳遞 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 Builder API,透過下列任一方式建立 Dynamic Links 支援的參數。請參閱 API 參考資料。
下列範例使用數個常見參數建立動態連結 設定:
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()
您可以使用下列方法設定動態連結參數:
DynamicLink 參數 | |
---|---|
setLink |
應用程式會開啟的連結。指定應用程式可處理的網址,通常是應用程式的內容 或酬載來啟動應用程式專屬的邏輯 (例如運用優待券或 顯示歡迎畫面)。此連結必須是格式正確的網址、採用正確的網址編碼,並使用 可使用 HTTP 或 HTTPS,且不能是其他動態連結 |
setDomainUriPrefix | 動態連結網址前置字串,可在 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 Links 時,應用程式預覽頁面 (預設為啟用) 能以更可靠的方式將使用者帶往最適當的目的地;不過,如果您認為只有在應用程式不必透過這個頁面也能順利開啟 Dynamic Links 應用程式,才會開啟 Dynamic Links,使用這個參數即可將其停用。這個參數只會影響 iOS 上的 Dynamic Links 行為。 |
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。 |
縮短完整動態連結
如要縮短較長的動態連結,請使用
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 // ... } } });