Firebase Realtime Database 使用入门 (C++)

Firebase 实时数据库使用 NoSQL 云端数据库存储和同步数据。数据会实时同步到所有客户端,而且即便您的应用处于离线状态,数据也仍然可供使用。

准备工作

在使用 Firebase Realtime Database 之前,您需要:

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

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

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

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

创建数据库

  1. 进入 Firebase 控制台Realtime Database 部分。 系统将会提示您选择一个现有的 Firebase 项目。按照数据库创建工作流操作。

  2. 为您的 Firebase 安全规则选择一个初始模式:

    测试模式

    此模式适合刚开始使用移动和 Web 客户端库的开发者,但会允许任何人读取和覆盖您的数据。测试完成后,请务必查看了解 Firebase Realtime Database 规则部分。

    如果是刚开始使用 Web、Apple 或 Android SDK,请选择测试模式。

    锁定模式

    拒绝来自移动和 Web 客户端的所有读写操作。经过身份验证的应用服务器仍然可以访问您的数据库。

  3. 为数据库选择位置。

    新数据库的网址将采用下列格式之一,具体取决于数据库的位置

    • DATABASE_NAME.firebaseio.com(位于 us-central1 的数据库)

    • DATABASE_NAME.REGION.firebasedatabase.app(位于所有其他位置的数据库)

  4. 点击完成

如果启用 Realtime Database,也就在 Cloud API 管理器中启用了相应 API。

创建并初始化 firebase::App

您需要先创建并初始化 firebase::App,然后才能访问 Realtime Database。

包括 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::database::Database 类

firebase::database::Database 是 Firebase Realtime Database C++ SDK 的入口点。

::firebase::database::Database *database = ::firebase::database::Database::GetInstance(app);

如果您已为自己的规则选择开放公共访问权限,则可转至有关保存和检索数据的部分。

设置受限访问

如果不想开放公共访问权限,您可在应用中添加 Firebase Authentication 来控制对数据库的访问权限。

后续步骤

已知问题

  • 在桌面平台(Windows、Mac、Linux)上,Firebase C++ SDK 使用 REST 访问您的数据库。因此,您必须在桌面上使用 Query::OrderByChild() 声明您使用的索引,否则您的侦听器将会失败。
  • 桌面工作流版本的 Realtime Database 不支持离线或持久化。