Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

接收 Dynamic Links 动态链接 (C++)

要接收您创建的 Firebase Dynamic Links 动态链接,您必须将 Dynamic Links SDK 添加到应用中,并创建一个 firebase::dynamic_links::Listener 对象以实现虚函数 OnDynamicLinkReceived

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

准备工作

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

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

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

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

请注意,将 Firebase 添加到 C++ 项目需要在 Firebase 控制台中和打开的 C++ 项目中执行若干任务(例如,从控制台下载 Firebase 配置文件,然后将配置文件移动到 C++ 项目中)。

添加自定义网址架构(仅适用于 iOS)

Firebase 动态链接 C++ 客户端库在 iOS 上采用自定义网址架构来处理链接。您必须为您的应用添加自定义网址架构,才可接收动态链接。

  1. 要打开您的项目配置,请在左侧的树状视图中双击项目名称。

  2. 目标部分中选择您的应用,再选择信息标签页,然后展开网址类型部分。

  3. 点击 + 按钮,为您的倒序客户端 ID 添加一个网址架构。要找到这个值,请执行以下操作:

    1. 打开 GoogleService-Info.plist 配置文件,查找 REVERSED_CLIENT_ID 键。

    2. 复制该键的值,然后将其粘贴到配置页面上的网址架构框中。

    3. 将其他字段留空。

  4. 点击 + 按钮,添加第二个网址架构。这个值与您应用的软件包 ID 相同。

    例如,如果您的软件包 ID 为 com.example.ios,请将该值输入网址架构框中。

    您可以在项目配置的常规标签页(身份 > 软件包标识符)中找到您的应用的软件包 ID。

接收动态链接

创建并初始化应用

您需要先创建并初始化一个 firebase::App 对象,然后才能检查是否已收到 Dynamic Links 动态链接。

包含 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"));

实现侦听器以检查是否有 Dynamic Links 动态链接

要检查是否已收到 Dynamic Links 动态链接,请实现并使用 firebase::dynamic_links::Listener 类。

包含用于接收 Dynamic Links 动态链接的头文件:

#include "firebase/dynamic_links.h"

初始化 Firebase Dynamic Links 库:

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

创建一个实现 firebase::dynamic_links::Listener 的对象,并使用 SetListener() 将其提供给 Dynamic Links 库,或者将其作为第二个参数传递给 Initialize

要接收 Dynamic Links 动态链接,您的侦听器类必须实现 OnDynamicLinkReceived 虚函数。通过重写该方法,您可以接收深层链接(如果确实收到了深层链接)。

class Listener : public firebase::dynamic_links::Listener {
 public:
  // Called on the client when a dynamic link arrives.
  void OnDynamicLinkReceived(
      const firebase::dynamic_links::DynamicLink* dynamic_link) override {
    printf("Received link: %s", dynamic_link->url.c_str());
  }
};