在 Android 上建立 Dynamic Links

您可以使用 Firebase Dynamic Links Builder API 建立短或長的 Dynamic Links。 這個 API 接受長的動態連結,或包含動態連結的物件 參數,並傳回如下範例的網址:

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

您必須先將 Firebase SDK。如果您的應用程式已設為接收 Dynamic Links 可以略過這部分

  1. 如果還沒試過 將 Firebase 新增至您的 Android 專案

    註冊應用程式時,請指定 SHA-1 簽署金鑰。如果您使用 應用程式連結,也會指定 SHA-256 金鑰。

  2. 模組 (應用程式層級) 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'
    }
    
    在尋找 Kotlin 專用的程式庫模組嗎?距離開始還有 2023 年 10 月 (Firebase BoM 32.5.0),Kotlin 和 Java 開發人員都能 依附於主要程式庫模組 (詳情請參閱 這項計畫的常見問題)。
  3. 在 Firebase 控制台中開啟「Dynamic Links」部分。
  4. 如果尚未接受服務條款並設定網域 並在系統提示時進行這項操作。

    如果您已經有 Dynamic Links 網域,請加以記下。您需要執行的操作 會在您透過程式建立 Dynamic Links 時提供 Dynamic Links 網域。

  5. 建議:指定深層連結中允許的網址模式 和備用連結這樣就能防止未經授權的對象 建立 Dynamic Links,從你的網域重新導向至你無法控管的網站。 請參閱允許特定 網址模式

使用 Firebase 控制台

產生單一動態連結 (用於測試目的或行銷團隊) 讓你不費吹灰之力建立連結 前往 Firebase 控制台 並按照逐步流程手動建立。

如要建立動態連結,請建立新的 DynamicLink 物件,並設定其 建立工具,使用建構工具指定 Dynamic Link 參數。接著,呼叫 buildDynamicLinkbuildShortDynamicLink

以下範例最簡單的範例會建立長的動態連結, 在 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_sourceutm_mediumutm_campaignutm_termutm_content) 會傳遞至 Play 商店,也會附加至連結酬載。
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes 連結數據分析參數。這些參數 (ptatct) 會傳遞到 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
                    // ...
                }
            }
        });