要接收您创建的 Firebase 动态链接,您必须在您的应用中包含动态链接 SDK,并在您的应用加载时调用FirebaseDynamicLinks.getDynamicLink()
方法以获取动态链接中传递的数据。
设置 Firebase 和动态链接 SDK
如果您还没有,请将 Firebase 添加到您的 Android 项目中。
当您注册您的应用程序时,请指定您的 SHA-1 签名密钥。如果您使用 App Links,还请指定您的 SHA-256 密钥。
在您的模块(应用程序级别)Gradle 文件(通常是
<project>/<app-module>/build.gradle
)中,添加动态链接 Android 库的依赖项。我们建议使用Firebase Android BoM来控制库版本。为了获得动态链接的最佳体验,我们建议在您的 Firebase 项目中启用 Google Analytics ,并将适用于 Google Analytics 的 Firebase SDK 添加到您的应用程序中。
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // 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-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
通过使用Firebase Android BoM ,您的应用将始终使用兼容版本的 Firebase Android 库。
(备选)在不使用 BoM 的情况下添加 Firebase 库依赖项
如果您选择不使用 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-ktx:21.1.0' implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // 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 库。
(备选)在不使用 BoM 的情况下添加 Firebase 库依赖项
如果您选择不使用 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:21.1.0' implementation 'com.google.firebase:firebase-analytics:21.2.0' }
- 在Firebase 控制台中,打开动态链接部分。如果系统提示您接受服务条款,请接受。
为深层链接添加意图过滤器
与普通深层链接一样,您必须向处理应用程序深层链接的活动添加一个新的意图过滤器。 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="example.com" android:scheme="https"/> </intent-filter>
当用户打开包含指向您指定的方案和主机的深层链接的动态链接时,您的应用程序将使用此 Intent 过滤器启动 Activity 以处理该链接。
处理深层链接
要接收深层链接,请调用
getDynamicLink()
方法:Kotlin+KTX
Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? -> // Get deep link from result (may be null if no link is found) var deepLink: Uri? = null if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.link } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... } .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }
Java
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); } });
您必须在链接可能启动的每个活动中调用
getDynamicLink()
,即使链接可能从使用getIntent().getData()
的 Intent 中可用。调用getDynamicLink()
检索链接并清除该数据,以便您的应用仅处理一次。您通常会在主活动中调用
getDynamicLink()
以及由与链接匹配的意图过滤器启动的任何活动。记录分析
以下事件可以在 Google Analytics 中自动跟踪并显示在 Firebase 控制台中。
-
dynamic_link_app_open
-
dynamic_link_first_open
-
dynamic_link_app_update
为了注册这些事件,您需要在检索深层链接之前配置 Google Analytics。检查是否满足以下条件:
- 在您的应用程序入口点调用
FirebaseDynamicLinks.getDynamicLink()
: - 发射器活动。例如:
action="android.intent.action.MAIN"
,category="android.intent.category.LAUNCHER"
。 - 活动入口点。例如:
onStart()
、onCreate()
。 - 深层链接活动。
- 设置和使用 Google Analytics:
- 包括 Google Analytics 依赖项。这通常由
google-services
Gradle 插件自动添加。 - 在您的应用中包含
google-services.json
配置文件。 - 在调用
FirebaseAnalytics.getInstance()
之前调用FirebaseDynamicLinks.getDynamicLink()
。
使用 App Links 处理动态链接
在 Android 6.0(API 级别 23)及更高版本上,您可以使用Android App Links将应用设置为在已安装应用时直接处理动态链接。
确保您已将应用程序的 SHA256 证书指纹添加到Firebase 控制台中的项目中。动态链接将处理为您的动态链接域设置应用程序链接网站关联。
将自动验证的意图过滤器添加到将处理动态链接的活动,将主机设置为在 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="example.com/link" android:scheme="http"/> <data android:host="example.com/link" android:scheme="https"/> </intent-filter>
请注意,
android:host
必须设置为您的动态链接域,而不是深层链接的域。清单中的所有
autoVerify
intent 过滤器都必须注册才能使用 App Links。 Firebase 会自动为您的动态链接域处理此问题,但您可以通过打开动态链接域上托管的assetlinks.json
文件来检查这一点:https://YOUR_DOMAIN/.well-known/assetlinks.json
应包含所有 Firebase 应用程序的包名称。动态链接现在将直接发送到您的应用程序。您将能够通过在添加了 App Links Intent 过滤器的 Activity 中调用
getDynamicLink()
来获取深层链接和其他动态链接数据(如处理深层链接中所述)。注意:由于通过应用链接调用会将用户直接带到应用,因此动态链接无法满足所需的最低版本。因此,应用打开后,您需要将动态链接的最低版本 ( getminimumappversion ) 与PackageInfo.versionCode进行比较,并在需要时使用getUpdateAppIntent重定向用户升级应用。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
Last updated 2023-02-07 UTC.
[] []