接收 Firebase 动态链接 (Android)

要接收您创建的 Firebase 动态链接,必须将 Dynamic Links SDK 添加到应用中,并在应用加载时调用 FirebaseDynamicLinks.getDynamicLink() 方法,以获取动态链接中传递的数据。

设置 Firebase 和 Dynamic Links SDK

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

为深层链接添加一个 intent 过滤器

普通深层链接一样,您必须为处理应用的深层链接的 Activity 添加一个新的 Intent 过滤器。Intent 过滤器应该捕获您的网域的深层链接,因为动态链接会重定向到您的网域(如果安装了您的应用)。从 Play 商店安装您的应用后,若要让该应用收到动态链接数据,则必须执行上述操作。在 AndroidManifest.xml 中:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:host="yoursite.example.com" android:scheme="http"/>
    <data android:host="yoursite.example.com" android:scheme="https"/>
</intent-filter>

当用户打开的动态链接带有指向您指定的架构和主机的深层链接时,您的应用将会启动含此 intent 过滤器的 Activity 来处理该链接。

要接收深层链接,可调用 getDynamicLink() 方法:

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(getIntent())
        .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
            @Override
            public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                // Get deep link from result (may be null if no link is found)
                Uri deepLink = null;
                if (pendingDynamicLinkData != null) {
                    deepLink = pendingDynamicLinkData.getLink();
                }

                // Handle the deep link. For example, open the linked
                // content, or apply promotional credit to the user's
                // account.
                // ...

                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "getDynamicLink:onFailure", e);
            }
        });

您必须在动态链接可能启动的每个 Activity 中调用 getDynamicLink() 来获取该链接,即使您可以使用 getIntent().getData() 从 intent 中获取该链接也是如此。调用 getDynamicLink() 可获取动态链接并清除相关数据,因此您的应用只会对该链接处理一次。

通常应该在主要 Activity 以及由与链接匹配的 intent 过滤器启动的所有 Activity 中调用 getDynamicLink()

记录分析结果

您可以在 Google Analytics for Firebase 中自动跟踪以下事件,并在 Firebase 控制台中显示。

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

为了注册这些事件,您需要在获取深层链接之前配置 Google Analytics for Firebase。检查是否满足以下条件:

  • 在您的应用入口点调用 FirebaseDynamicLinks.getDynamicLink()
    • 启动器 Activity。例如:action="android.intent.action.MAIN"category="android.intent.category.LAUNCHER"
    • Activity 入口点。例如:onStart()onCreate()
    • 深层链接 Activity。
  • 设置并使用 Google Analytics for Firebase:
    • 包含 Google Analytics for Firebase 依赖项。该依赖项通常由 google-services Gradle 插件自动添加。
    • 在您的应用中添加 google-services.json 配置文件
    • 在调用 FirebaseDynamicLinks.getDynamicLink() 之前先调用 FirebaseAnalytics.getInstance()

在 Android 6.0(API 级别 23)及更高版本中,如果已安装了您的应用,则您可以将该应用设置为使用 Android 应用链接直接处理动态链接。

确保已在 Firebase 控制台中将您应用的 SHA256 证书指纹添加到您的项目中。动态链接将处理为您的动态链接域名设置应用链接网站关联的操作。

为处理动态链接的 Activity 添加一个自动验证的 intent 过滤器,从而将主机设置为您项目的动态链接域名(可以在 Firebase 控制台中找到该域名)。在 AndroidManifest.xml 中:

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:host="your.dynamic.links.domain.example.com" android:scheme="http"/>
    <data android:host="your.dynamic.links.domain.example.com" android:scheme="https"/>
</intent-filter>

请注意验证 Android 应用链接文档中的要求,即您的清单文件中所有符合条件的 intent 过滤器都需要经过验证才能实现此功能。

现在,系统会将动态链接直接发送到您的应用。您可以通过在添加了应用链接 Intent 过滤器的 Activity 中调用 getDynamicLink() 来获取深层链接和其他动态链接数据(如处理深层链接中所述)。

发送以下问题的反馈:

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