Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

在Android上創建動態鏈接

您可以使用Firebase動態鏈接生成器API創建簡短的或較長的動態鏈接。該API接受長動態鏈接或包含動態鏈接參數的對象,並返回如下示例所示的URL:

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

必須先包含Firebase SDK,然後才能在Android應用中創建動態鏈接。如果您的應用程序設置為接收動態鏈接,則您已經完成了這些步驟,可以跳過本節。

  1. 如果尚未將Firebase添加到您的Android項目中

    註冊應用程序時,請指定SHA-1簽名密鑰。如果您使用應用程序鏈接,還請指定您的SHA-256密鑰。

  2. 在項目級別的build.gradle文件中,確保在buildscriptallprojects部分中都包含Google的Maven存儲庫。
  3. 將Dynamic Links Android庫的依賴項添加到模塊(應用程序級)Gradle文件(通常為app/build.gradle )中。

    為了獲得最佳的動態鏈接體驗,我們建議您在項目中啟用Google Analytics(分析) 。另外,作為設置Google Analytics(分析)的一部分,您需要將Firebase SDK for Analytics添加到您的應用中。

    爪哇

    implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
    implementation 'com.google.firebase:firebase-analytics:17.5.0'

    Kotlin + KTX

    implementation 'com.google.firebase:firebase-dynamic-links-ktx:19.1.0'
    implementation 'com.google.firebase:firebase-analytics-ktx:17.5.0'
  4. 在Firebase控制台中,打開“ 動態鏈接”部分。
  5. 如果您尚未接受服務條款並為動態鏈接設置域,請在出現提示時進行。

    如果您已經有一個動態鏈接域,請記下它。以編程方式創建動態鏈接時,需要提供一個動態鏈接域。

  6. 推薦 :指定深層鏈接和後備鏈接中允許的URL模式。這樣,可以防止未經授權的各方創建從您的域重定向到不受控制的站點的動態鏈接。請參閱將網址格式列入白名單

使用Firebase控制台

如果您想生成一個動態鏈接(用於測試目的)或讓您的營銷團隊輕鬆創建可在社交媒體帖子等內容中使用的鏈接,則最簡單的方法是訪問Firebase控制台並創建一個手動按照分步表單進行操作。

要創建動態鏈接,請使用其Builder創建一個新的DynamicLink對象,並使用Builder方法指定Dynamic Link參數。然後,調用buildDynamicLinkbuildShortDynamicLink

以下最小示例創建了一個指向https://www.example.com/的長動態鏈接,該鏈接隨Android應用程序(在Android上)和應用程序com.example.ios在iOS上)一起打開:

爪哇

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();

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

要創建短動態鏈接,請以相同的方式構建DynamicLink ,然後調用buildShortDynamicLink 。構建短鏈接需要網絡調用,因此buildShortDynamicLink而不是直接返回鏈接, buildShortDynamicLink返回Task ,該Task在請求完成時使短鏈接可用。例如:

爪哇

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
                    // ...
                }
            }
        });

Kotlin + KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { result ->
    // Short link created
    val shortLink = result.shortLink
    val flowchartLink = result.previewLink
}.addOnFailureListener {
    // Error
    // ...
}

默認情況下,會生成帶有17個字符的鏈接後綴的簡短動態鏈接,這使人們極不可能猜出有效的動態鏈接。如果對於您的用例而言,成功猜出短鏈接對某人沒有危害,則您可能更希望生成後綴,該後綴只有唯一的後綴,可以通過將ShortDynamicLink.Suffix.SHORT傳遞給buildShortDynamicLink方法來完成。 :

爪哇

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

Kotlin + KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

您可以使用Dynamic Link Builder API來創建具有任何受支持參數的動態鏈接。有關詳細信息,請參見API參考

以下示例創建具有幾個常用參數集的動態鏈接:

爪哇

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()

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!"
    }
}

您可以使用以下方法設置動態鏈接參數:

DynamicLink參數
setLink

您的應用程序的鏈接將打開。指定應用程序可以處理的URL(通常是應用程序的內容或有效負載),該URL會啟動應用程序特定的邏輯(例如,將優惠券存入用戶帳戶或顯示歡迎屏幕)。該鏈接必須是格式正確的URL,必須經過正確的URL編碼,使用HTTP或HTTPS,並且不能是另一個動態鏈接。

setDomainUriPrefix 您的動態鏈接URL前綴,可以在Firebase控制台中找到。動態鏈接域看起來像以下示例:
https://example.com/link
https://example.page.link
Android參數
setFallbackUrl 未安裝應用程序時打開的鏈接。指定此選項可以執行其他操作,而不是在未安裝應用程序時從Play商店安裝應用程序,例如打開內容的移動網絡版本,或顯示應用程序的宣傳頁。
setMinimumVersion 可以打開鏈接的應用程序最低版本的versionCode 。如果安裝的應用是較舊的版本,則將用戶帶到Play商店升級該應用。
ios參數
setAppStoreId 您應用的應用商店ID,用於在未安裝應用時將用戶發送到應用商店
setFallbackUrl 未安裝應用程序時打開的鏈接。指定此選項可以執行其他操作,而不是在未安裝應用程序時從App Store安裝應用程序,例如打開內容的移動網絡版本,或顯示應用程序的促銷頁面。
setCustomScheme 應用程序的自定義URL方案(如果定義為應用程序的包ID以外的名稱)
setIpadFallbackUrl 未安裝應用程序時在iPad上打開的鏈接。指定此選項可以執行其他操作,而不是在未安裝應用程序時從App Store安裝應用程序,例如打開內容的網絡版本,或顯示應用程序的促銷頁面。
setIpadBundleId 在iPad上用於打開鏈接的iOS應用的捆綁軟件ID。該應用程序必須從Firebase控制台的“概述”頁面連接到您的項目。
setMinimumVersion 可以打開鏈接的應用程序最低版本的版本號 。該標誌在打開時會傳遞給您的應用,並且您的應用必須決定如何處理它。
NavigationInfoParameters
setForcedRedirectEnabled 如果設置為“ 1”,則在打開“動態鏈接”時跳過應用程序預覽頁面,而是重定向到應用程序或商店。當用戶在應用程序中打開“動態鏈接”時,應用程序預覽頁面(默認情況下啟用)可以更可靠地將用戶發送到最合適的目的地;但是,如果您希望僅在無需此頁面就能可靠地打開動態鏈接的應用程序中打開動態鏈接,則可以使用此參數將其禁用。注意:應用預覽頁面目前僅在iOS上顯示,但最終可能會在Android上顯示。此參數將影響兩個平台上的動態鏈接的行為。
SocialMetaTagParameters
setTitle 在社交信息中共享動態鏈接時使用的標題。
setDescription 在社交信息中共享動態鏈接時使用的描述。
setImageUrl 與該鏈接相關的圖像的URL。圖片應至少為300x200像素,且小於300 KB。
GoogleAnalytics參數
setSource
setMedium
setCampaign
setTerm
setContent
Google Play分析參數。這些參數( utm_sourceutm_mediumutm_campaignutm_termutm_content )被傳遞到Play商店,並附加到鏈接有效負載中。
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect分析參數。這些參數( ptatct )被傳遞到App Store。

要縮短長動態鏈接,請使用setLongLink而不是使用其他構建器方法設置參數來指定動態鏈接的URL:

爪哇

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
                    // ...
                }
            }
        });

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 { result ->
    // Short link created
    val shortLink = result.shortLink
    val flowchartLink = result.previewLink
}.addOnFailureListener {
    // Error
    // ...
}