转到控制台

通过 C++ 创建动态链接

您可以使用 Firebase Dynamic Links API 创建短动态链接或长动态链接。该 API 会使用几种可选的参数结构来构建链接。您也可以根据以前生成的长链接来创建短链接。Firebase 动态链接可生成如下所示的网址:

https://example.page.link/WXYZ

C++ SDK 适用于 Android 和 iOS,但需要针对各个平台进行一些额外设置。

准备工作

在使用 Firebase 动态链接之前,您需要:

  • 注册 C++ 项目并将其配置为使用 Firebase。

    如果您的 C++ 项目已在使用 Firebase,那么您就已注册该 C++ 项目并已将其配置为使用 Firebase。

  • 在项目级层 build.gradle 文件中,请务必在您的 buildscriptallprojects 部分添加 Google 的 Maven 代码库。

  • Firebase C++ SDK 添加到您的 C++ 项目。

请注意,将 Firebase 添加到 C++ 项目涉及 Firebase 控制台和打开的 C++ 项目中的任务(例如,您从控制台下载 Firebase 配置文件,然后将它们移动到 C++ 项目中)。

Android

  1. 在 Firebase 控制台中,打开动态链接部分。
  2. 如果您尚未接受服务条款并为动态链接设置网域,请在收到提示时执行相关操作。

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

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

iOS

  1. 在 Firebase 控制台中,打开动态链接部分。
  2. 如果您尚未接受服务条款并为动态链接设置网域,请在收到提示时执行相关操作。

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

  3. Firebase 动态链接 C++ 客户端库在 iOS 上采用自定义网址架构来处理链接。您必须为您的应用添加自定义网址架构,以支持接收动态链接:
    1. 要打开您的项目配置,请在左侧的树状视图中双击项目名称。从目标部分中选择您的应用,然后选择信息标签,并展开网址类型部分。
    2. 点击 + 按钮,并为您的倒序客户端 ID 添加一个网址架构。要找到这个值,请打开 GoogleService-Info.plist 配置文件,然后查找 REVERSED_CLIENT_ID 键。复制该键的值,并将其粘贴到配置页面上的网址架构框中。将其他字段留空。
    3. 点击 + 按钮并添加第二个网址架构。此架构与您的应用的软件包 ID 一致。例如,如果您的软件包 ID 为 com.example.ios,请将该值输入网址架构框中。您可以在项目配置中的常规标签页(身份 > 软件包标识符)中找到您的应用的软件包 ID。

使用 Firebase 控制台

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

使用 Firebase Dynamic Links API

创建并初始化应用

您需要先创建并初始化一个 firebase::App 对象,然后才能创建动态链接。

包含 firebase::App 的头文件:

#include "firebase/app.h"

下一部分因平台而异:

Android

创建 firebase::App,将 JNI 环境和 jobject 引用以参数形式传递到 Java Activity:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

iOS

创建 firebase::App

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

初始化动态链接库

创建动态链接之前,您必须先初始化动态链接库:

::firebase::dynamic_links::Initialize(app, null);

利用参数创建长动态链接

要创建动态链接,请创建一个 DynamicLinkComponents 对象,并设置所有用于额外配置的可选成员,然后将该对象传递到 dynamic_links::GetShortLinkdynamic_links::GetLongLink

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

firebase::dynamic_links::IOSParameters ios_parameters("com.example.ios");

firebase::dynamic_links::AndroidParameters android_parameters(
    "com.example.android.package_name");

firebase::dynamic_links::DynamicLinkComponents components(
    "https://www.example.com/", "example.page.link");
components.android_parameters = &android_parameters;
components.ios_parameters = &ios_parameters;

firebase::dynamic_links::GeneratedDynamicLink long_link =
    firebase::dynamic_links::GetLongLink(components);

创建短动态链接

要创建一个短动态链接,请将之前生成的长链接传递给 GetShortLink 或采用与上面相同的方式构建 DynamicLinkComponents

GetShortLink 可以选择性地接受包含 PathLength 的额外 DynamicLinkOptions 配置参数;这样一来,您就可以控制链接的生成方式。生成短链接需要向 Firebase 后端发出网络请求,因此,GetShortLink 是异步的,会返回一个 Future<GeneratedLink>

例如:

firebase::dynamic_links::DynamicLinkOptions short_link_options;
short_link_options.path_length = firebase::dynamic_links::kPathLengthShort;

firebase::Future<firebase::dynamic_links::GeneratedDynamicLink> result =
    firebase::dynamic_links::GetShortLink(components, short_link_options);

如果您的程序有定期(如每秒 30 次或 60 次)运行的更新循环,那么您可以在每次更新时检查结果:

if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) {
    firebase::dynamic_links::GeneratedDynamicLink link = *result.result();
    printf("Create short link succeeded: %s\n", link.url.c_str());
  } else {
    printf("Created short link failed with error '%s'\n",
           result.error_message());
  }
}