转到控制台

创建动态链接 (Android)

您可以使用 Firebase Dynamic Links Builder API 创建短动态链接或长动态链接。此 API 接受一个长动态链接或一个包含动态链接参数的对象,并返回如下所示的网址:

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

设置 Firebase 和 Dynamic Links SDK

您必须先安装 Firebase SDK,然后才能在您的 Android 应用中创建动态链接。如果您的应用已设置为接收动态链接,说明您已经完成了这些步骤,可以跳过这一部分。

  1. 将 Firebase 添加至您的 Android 项目(如果尚未添加)。

    在注册您的应用时,请指定 SHA-1 签名密钥。如果您使用应用链接,还需要指定 SHA-256 密钥。

  2. 在项目级层 build.gradle 文件中,请务必在您的 buildscriptallprojects 部分添加 Google 的 Maven 代码库。
  3. 将 Android 版 Firebase 动态链接库的依赖项添加到您的模块(应用级层)Gradle 文件(通常为 app/build.gradle):
    implementation 'com.google.firebase:firebase-dynamic-links:18.0.0'
  4. 在 Firebase 控制台中,打开动态链接部分。
  5. 如果您尚未接受服务条款,也尚未为动态链接设置网域,请在收到提示时执行相关操作。

    如果您已经有了动态链接网域,请记下它。在以编程方式创建动态链接时,您需要提供动态链接网域。

  6. 推荐:指定可以在您的深层链接和后备链接中使用的网址格式。这样做可以防止未经授权者创建动态链接,从您的网域重定向至您无法控制的网站。请参阅白名单网址格式

使用 Firebase 控制台

如果您想生成一个动态链接(无论是出于测试目的,还是为了让您的营销团队轻松创建可以在社交媒体帖子等地方使用的链接),最简单的方法就是访问 Firebase 控制台并按照分步说明手动创建一个。

利用参数创建动态链接

要创建动态链接,请使用其 Builder 创建一个新的 DynamicLink 对象,并使用 Builder 方法指定动态链接参数。然后,调用 buildDynamicLinkbuildShortDynamicLink

下面这个极为简单的示例创建了一个指向 https://www.example.com/ 的长动态链接,此链接会在您的 Android 应用(在 Android 上)和 iOS 应用 com.example.ios(在 iOS 上)中打开:

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

Kotlin

val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink()

val dynamicLinkUri = dynamicLink.uri

要创建一个短动态链接,请按照与上面相同的方式构建一个 DynamicLink,然后调用 buildShortDynamicLink。构建短链接需要发出网络调用。因此,buildShortDynamicLink 会返回一个 Task(用于在请求完成时提供短链接),而不是直接返回链接。例如:

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

Kotlin

val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnSuccessListener { result ->
            // Short link created
            val shortLink = result.shortLink
            val flowchartLink = result.previewLink
        }.addOnFailureListener {
            // Error
            // ...
        }

默认情况下,生成的短动态链接有 17 个字符的链接后缀,让他人极不可能猜测出有效的动态链接。如果在您的用例中,短链接即使被人成功猜出也不会有任何危害,您也许更倾向于仅生成所需长度的后缀(只要保证唯一就行)。您可以通过将 ShortDynamicLink.Suffix.SHORT 传递到 buildShortDynamicLink 方法来实现这一目的:

Java

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

Kotlin

val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT)
        // ...

动态链接参数

您可以使用 Dynamic Link Builder API 根据任意受支持的参数来创建动态链接。如需了解详细信息,请参阅 API 参考

以下示例使用几个常见参数创建了一个动态链接:

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

Kotlin

val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                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 控制台中找到。动态链接网域类似于以下示例:

https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl 在用户未安装应用时要打开的链接。指定此链接是为了在用户未安装应用时完成一些除了从 Play 商店安装您的应用之外的其他任务,比如打开内容的移动网页版或显示您的应用的宣传页面。
setMinimumVersion 可以打开链接的最低应用版本的 versionCode。如果安装的应用是较早的版本,则会将用户引至 Play 商店升级应用。
IosParameters
setAppStoreId 您的应用的 App Store ID,用于在用户未安装应用时将他们引导至 App Store。
setFallbackUrl 在用户未安装应用时要打开的链接。指定此链接是为了在用户未安装应用时完成一些除了从 App Store 安装您的应用之外的其他任务,比如打开内容的移动网页版或显示您的应用的宣传页面。
setCustomScheme 您的应用的自定义网址架构(如果定义为不同于您的应用的软件包 ID 的其他内容)。
setIpadFallbackUrl 在用户未安装应用时要在 iPad 上打开的链接。指定此链接是为了在用户未安装应用时完成一些除了从 App Store 安装您的应用之外的其他任务,比如打开内容的网页版或显示您的应用的宣传页面。
setIpadBundleId 在 iPad 上用于打开链接的 iOS 应用的软件包 ID。您必须从 Firebase 控制台的“概览”页面将该应用关联到您的项目。
setMinimumVersion 可以打开链接的应用最低版本的版本号。此标志在您的应用被打开时传递到该应用,并且应用必须决定如何处理此标志。
NavigationInfoParameters
setForcedRedirectEnabled 如果设为“1”,当动态链接打开时,会跳过应用预览页面,重定向到相关应用或商店。当用户在应用中打开动态链接时,应用预览页面(默认为启用状态)可以更加可靠地将用户引导至最合适的目标位置;但是,如果您希望动态链接仅在无需此页面也能可靠地打开它的应用中打开,则可以使用此参数停用应用预览页面。注意:应用预览页面当前仅在 iOS 上显示,但最终可能会在 Android 上显示。此参数将影响动态链接在这两种平台上的行为。
SocialMetaTagParameters
setTitle 在社交贴子中分享动态链接时要使用的标题。
setDescription 在社交贴子中分享动态链接时要使用的描述。
setImageUrl 与此链接关联的图片的网址。该图片的尺寸应至少为 300x200 像素,且小于 300 KB。
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Google Play 分析参数。这些参数(utm_sourceutm_mediumutm_campaignutm_termutm_content)会传递给 Play 商店并附加在链接有效负载上。
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect 分析参数。这些参数(ptatct)会传递给 App Store。

缩短长动态链接

要缩短长动态链接,请使用 setLongLink 指定动态链接的网址,而不是使用其他构建器方法来设置参数:

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

Kotlin

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