获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

使用 C++ 接收动态链接

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

要接收您创建的 Firebase 动态链接,您必须在您的应用中包含动态链接 SDK 并创建一个实现OnDynamicLinkReceived虚函数的 firebase firebase::dynamic_links::Listener对象。

C++ SDK 适用于 Android 和 iOS,每个平台都需要一些额外的设置。

在你开始之前

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

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

    如果您的 C++ 项目已经使用 Firebase,那么它已经针对 Firebase 进行了注册和配置。

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

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

添加自定义 URL 方案(仅适用于 iOS)

Firebase Dynamic Links C++ 客户端库在 iOS 上使用自定义 URL 方案来处理链接。您必须将自定义 URL 方案添加到您的应用程序以支持接收动态链接。

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

  2. TARGETS部分选择您的应用程序,然后选择Info选项卡,然后展开URL Types部分。

  3. 单击+按钮,然后为反向客户端 ID 添加 URL 方案。要找到这个值:

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

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

    3. 将其他字段留空。

  4. 单击+按钮,然后添加第二个 URL 方案。这一个与您应用程序的捆绑包 ID 相同。

    例如,如果您的包 ID 是com.example.ios ,请将该值键入URL Schemes框中。

    您可以在项目配置的常规选项卡中找到您的应用程序的捆绑包 ID ( Identity > Bundle Identifier )。

接收动态链接

创建并初始化应用

在检查收到的动态链接之前,您需要创建并初始化一个firebase::App对象。

包括firebase::App的头文件:

#include "firebase/app.h"

下一部分因平台而异:

安卓

创建firebase::App ,将 JNI 环境和对 Java Activity 的jobject引用作为参数传递:

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::Listener类。

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

#include "firebase/dynamic_links.h"

初始化动态链接库:

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

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

要接收动态链接,您的 Listener 类必须实现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());
  }
};
,

要接收您创建的 Firebase 动态链接,您必须在您的应用中包含动态链接 SDK 并创建一个实现OnDynamicLinkReceived虚函数的 firebase firebase::dynamic_links::Listener对象。

C++ SDK 适用于 Android 和 iOS,每个平台都需要一些额外的设置。

在你开始之前

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

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

    如果您的 C++ 项目已经使用 Firebase,那么它已经针对 Firebase 进行了注册和配置。

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

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

添加自定义 URL 方案(仅适用于 iOS)

Firebase Dynamic Links C++ 客户端库在 iOS 上使用自定义 URL 方案来处理链接。您必须将自定义 URL 方案添加到您的应用程序以支持接收动态链接。

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

  2. TARGETS部分选择您的应用程序,然后选择Info选项卡,然后展开URL Types部分。

  3. 单击+按钮,然后为反向客户端 ID 添加 URL 方案。要找到这个值:

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

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

    3. 将其他字段留空。

  4. 单击+按钮,然后添加第二个 URL 方案。这一个与您应用程序的捆绑包 ID 相同。

    例如,如果您的包 ID 是com.example.ios ,请将该值键入URL Schemes框中。

    您可以在项目配置的常规选项卡中找到您的应用程序的捆绑包 ID ( Identity > Bundle Identifier )。

接收动态链接

创建并初始化应用

在检查收到的动态链接之前,您需要创建并初始化一个firebase::App对象。

包括firebase::App的头文件:

#include "firebase/app.h"

下一部分因平台而异:

安卓

创建firebase::App ,将 JNI 环境和对 Java Activity 的jobject引用作为参数传递:

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::Listener类。

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

#include "firebase/dynamic_links.h"

初始化动态链接库:

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

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

要接收动态链接,您的 Listener 类必须实现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());
  }
};