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

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

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

准备工作

在使用 Firebase Dynamic Links 之前,您需要:

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

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

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

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

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

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

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

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

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

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

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

    3. 将其他字段留空。

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

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

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

接收 Dynamic Link

创建并初始化应用

您需要先创建并初始化一个 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 Link,请实现并使用 firebase::dynamic_links::Listener 类。

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

#include "firebase/dynamic_links.h"

初始化 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());
  }
};