Go to console

使用 C++ 接收动态链接

要接收您创建的 Firebase 动态链接,您必须在应用中包括动态链接 SDK 并建立一个 firebase::invites::Listener 对象以实现虚拟函数 OnInviteReceived

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

开始前的准备工作

Android

  1. 如果您尚未将应用关联到您的 Firebase 项目,请通过 Firebase 控制台进行关联。
  2. 将 Firebase 添加至您的 Android 项目
  3. 将 Firebase 邀请的以下依赖关系添加至您的应用级 build.gradle 文件:
    dependencies {
         compile 'com.google.firebase:firebase-invites:10.0.1'
    }
  4. C++ SDK 关联 libapp.alibinvites.a 静态库。

iOS

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

接收动态链接

创建并初始化应用

您需要首先创建并初始化一个 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 邀请 C++ 库也用于接收动态链接。要检查是否已收到动态链接,请实现并使用 firebase::invites::Listener 类。

包含头文件以接收邀请:

#include "firebase/invites.h"

初始化 Firebase 邀请库:

::firebase::invites::Initialize(app);

创建一个实现 firebase::invites::Listener 的对象,并使用 SetListener() 将其提供给 Firebase 邀请库。

要接收邀请,您的侦听器类须实现 OnInviteReceived 虚拟函数。通过重写方法,您可能会收到一个深层链接(如果之前曾经收到过)。

void OnInviteReceived(const char* invitation_id, const char* deep_link,
                      bool is_strong_match) override {
  if (deep_link != nullptr) {
    // The app received a Dynamic Link. This may have come from an invitation
    // (if invite.invitation_id is set), or it might have been sent using
    // Firebase Dynamic Links.
    // In any event, the app can now act on this link as you see fit.
  }
  if (invitation_id != nullptr) {
    // We received an invitation ID. See the Firebase Invites documentation
    // for more information.
  }
}