创建动态链接 (C++)

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

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

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

开始之前

Android

  1. 如果您尚未将您的应用与 Firebase 项目相关联,请在 Firebase 控制台中进行关联。
  2. 将 Firebase 添加到您的 Android 项目
  3. 将 Firebase 动态链接的依赖项添加到您的应用级 build.gradle 文件中:
    dependencies {
     implementation 'com.google.firebase:firebase-invites:16.0.0'
    }
  4. 链接 C++ SDK 中的 libapp.alibdynamic_links.a 静态库。

iOS

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

使用 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://example.com/", "abc123.app.goo.gl");
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());
  }
}

发送以下问题的反馈:

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