Firebase 邀请使用入门 (C++)

要使用 C++ 编写您的跨平台 Firebase 邀请客户端应用,请使用 Firebase Invites API。C++ SDK 适用于 Android 和 iOS,但这两个平台都还需要进行一些额外设置。

准备工作

Android

  1. 如果您尚未将应用关联到 Firebase 项目,请从 Firebase 控制台关联。
  2. 如果您尚未启用 Firebase 动态链接,请在 Firebase 控制台中打开“动态链接”部分,然后在看到提示时接受服务条款,以启用动态链接。由于 Firebase 邀请基于 Firebase 动态链接构建而成,因此您必须启用 Firebase 动态链接,方可使用 Firebase 邀请。
  3. 将 Firebase 添加至您的 Android 项目
  4. 将 Firebase 邀请的依赖项添加到您的应用级 build.gradle 文件:

    dependencies {
         implementation 'com.google.firebase:firebase-invites:16.1.0'
    }
    
  5. 关联 C++ SDK 中的 libapp.alibinvites.a 静态库。

iOS

  1. 如果您尚未将应用关联到 Firebase 项目,请从 Firebase 控制台关联。
  2. 如果您尚未启用 Firebase 动态链接,请在 Firebase 控制台中打开“动态链接”部分,然后在看到提示时接受服务条款,以启用动态链接。由于 Firebase 邀请基于 Firebase 动态链接构建而成,因此您必须启用 Firebase 动态链接,方可使用 Firebase 邀请。
  3. 将 Firebase 添加到您的 iOS 项目
  4. Firebase 邀请 C++ 客户端库在 iOS 上采用 Google 登录服务。用户必须登录才能发送邀请,而且您必须将自定义网址架构添加到您的应用以支持发送邀请:
    1. 要打开您的项目配置,请在左侧的树状视图中双击项目名称。从目标部分中选择您的应用,然后选择信息标签,并展开网址类型部分。
    2. 点击 + 按钮,并为您的倒序客户端 ID 添加一个网址架构。要找到这个值,请打开 GoogleService-Info.plist 配置文件,然后查找 REVERSED_CLIENT_ID 键。复制该键的值,并将其粘贴到配置页面上的网址架构框中。将其他字段留空。
    3. 点击 + 按钮并添加第二个网址架构。此架构与您的应用的软件包 ID 一致。例如,如果您的软件包 ID 为 com.example.app,请将该值输入到网址架构框中。您可以在项目配置中的常规标签(身份 > 软件包标识符)中找到您的应用的软件包 ID。
  5. 将以下 Pod 包含在您的 Podfile 中:

    pod 'Firebase/Invites'
    
  6. 运行 pod install

  7. 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"));

创建并配置邀请

包含头文件以发送邀请:

#include "firebase/invites.h"

初始化邀请库:

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

创建 firebase::invites::Invite 的一个新实例,然后使用您的邀请设置对该实例进行配置:

firebase::invites::Invite invite;
invite.title_text = "Invite Friends";
invite.message_text = "Try my app today, and get 200 free coins!";
invite.call_to_action_text = "Download now!";

请参阅此处,以了解邀请设置的完整列表,包括在每个平台上哪些设置受支持。

如需详细了解自定义邀请,请参阅 Firebase 邀请最佳做法

发送邀请

当您准备好显示邀请时,请调用 SendInvite()

firebase::invites::SendInvite(invite);

这将显示邀请客户端界面,允许用户选择收件人和修改消息(如果需要)。此界面将一直显示在屏幕上,直到用户选择发送邀请或取消发送。

SendInvite() 会立即返回结果并异步显示界面。结果是通过 firebase::Future 返回的,您可以通过查询此对象来查明邀请是否已发送,并确定该界面何时不再显示在屏幕上。

您也可以通过调用 SendInviteLastResult() 获取最新的 firebase::Future。返回的结果与最近调用 SendInvite() 的结果相同。

auto future_result = firebase::invites::SendInviteLastResult();
if (future_result.status() == future::kFutureStatusComplete) {
    if (future_result.error() == 0) {
        auto result = *future.result();
        if (result.invitation_ids.size() > 0) {
            // One or more invitations were sent. You can log the invitation IDs here for
            // analytics purposes, as they will be the same on the receiving side.
        }
        else {
            // Zero invitations were sent. This tells us that the user canceled sending
            // invitations.
        }
    } else {
        // error() is nonzero, which means an error occurred. You can check
        // future_result.error_message() for more information.
    }
} else {
    // The SendInvite() operation has not completed yet, which means the Invites
    // client UI is still on screen. Check the status() again soon.
}

您还可以使用 OnCompletion() 设置一个回调函数,以便在 SendInvite() 完成时收到通知(告知您邀请界面已完成),而不是采用轮询 status() 的方式。如需了解详情,请参阅 firebase::Future 文档。

跨平台邀请

如果您在 Firebase 控制台中的项目对于每个平台恰好包含一个应用,则 Firebase 邀请会自动将应用与相应平台关联,例如,若 iOS 用户点击了由 Android 用户发送的邀请,则前者将被引导至适当位置,并在相应平台安装您的应用。

如果每个平台对应有多个应用,则可以设置 ios_platform_client_idandroid_platform_client_id,并传入相应平台上的应用的 Firebase 客户端 ID。

接收邀请

收到邀请后,如果用户尚未安装您的应用,可以选择从自己所用平台的应用商店中下载并安装您的应用。

在安装应用后(或如果已安装应用),应用将启动并接收指向其内容的网址(如果您已发送)。应用也会接收邀请 ID,该 ID 将与发送端的邀请 ID 匹配。

一般情况下,您的应用应在启动时检查传入的邀请。

创建并初始化应用

您需要先创建并初始化一个 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"));

实现侦听器并检查传入的邀请

包含头文件以接收邀请:

#include "firebase/invites.h"

初始化邀请库:

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

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

要接收邀请,您的侦听器类必须实现 OnInviteReceived 虚函数。通过重写该方法,您将可以接收邀请 ID(如果确实收到了邀请)。

void OnInviteReceived(const char* invitation_id, const char* deep_link,
                      bool is_strong_match) override {
  // Fetch succeeded, let's find out what we received.
  if (invitation_id != nullptr) {
    // The app received an invitation ID. This will match the invitation ID
    // that the sender got when they sent the invitation, so you can use this
    // to track when invitations are completed.
  }
  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.
  }
}

发送以下问题的反馈:

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