创建动态链接 (Android)

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

https://abc123.app.goo.gl/WXYZ

设置 Firebase 和 Dynamic Links SDK

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

  • 将 Firebase 添加到您的 Android 项目。将 Firebase 动态链接的依赖项添加到您的应用级 build.gradle 文件中:
    implementation 'com.google.firebase:firebase-invites:16.0.0'
  • 如果您尚未将自己的应用关联到您的 Firebase 项目,请在 Firebase 控制台中进行关联。在关联您的应用时,请务必指定 SHA-1 签名密钥。如果您使用应用链接,还需要指定 SHA-256 密钥。
  • Firebase 控制台中,打开 Dynamic Links(动态链接)部分。
    1. 如有提示,请接受服务条款。
    2. 记下项目的动态链接网域,它将显示在“动态链接”页的顶部。您需要项目的动态链接网域才能以编程方式创建动态链接。动态链接网域的格式为:app_code.app.goo.gl

使用 Firebase 控制台

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

利用参数创建动态链接

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

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

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://example.com/"))
        .setDynamicLinkDomain("abc123.app.goo.gl")
        // 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,但您还要使用 setDynamicLinkDomain 方法指定动态链接网域(可在 Firebase 控制台中找到),然后再调用 buildShortDynamicLink。构建短链接需要发出网络调用。因此,buildShortDynamicLink 会返回一个 Task(用于在请求完成时提供短链接),而不是直接返回链接。例如:

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://example.com/"))
        .setDynamicLinkDomain("abc123.app.goo.gl")
        // 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 Link Builder API 根据任意受支持的参数来创建动态链接。如需了解详细信息,请参阅 API 参考

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

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://example.com/"))
        .setDynamicLinkDomain("abc123.app.goo.gl")
        .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 架构,且不是另一个动态链接。

setDynamicLinkDomain 您的动态链接网域,可在 Firebase 控制台中找到。动态链接网域类似于以下示例:abc123.app.goo.gl
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 指定动态链接的网址,而不是使用其他构建器方法来设置参数:

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://abc123.app.goo.gl/?link=https://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
                    // ...
                }
            }
        });

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面