Firebase 实时数据库使用 NoSQL 云端数据库存储和同步数据。数据会实时同步到所有客户端,而且即便您的应用处于离线状态,数据也仍然可供使用。
准备工作
在使用 Firebase Realtime Database 之前,您需要:
注册 C++ 项目并将其配置为使用 Firebase。
如果您的 C++ 项目已在使用 Firebase,那么该项目已经注册并已配置为使用 Firebase。
将 Firebase C++ SDK 添加到您的 C++ 项目。
请注意,将 Firebase 添加到 C++ 项目需要在 Firebase 控制台中和打开的 C++ 项目中执行若干任务(例如,从控制台下载 Firebase 配置文件,然后将配置文件移动到 C++ 项目中)。
创建数据库
进入 Firebase 控制台的 Realtime Database 部分。 系统将会提示您选择一个现有的 Firebase 项目。按照数据库创建工作流操作。
为您的 Firebase 安全规则选择一个初始模式:
- 测试模式
此模式适合刚开始使用移动和 Web 客户端库的开发者,但会允许任何人读取和覆盖您的数据。测试完成后,请务必查看了解 Firebase Realtime Database 规则部分。
如果是刚开始使用 Web、Apple 或 Android SDK,请选择测试模式。
- 锁定模式
拒绝来自移动和 Web 客户端的所有读写操作。经过身份验证的应用服务器仍然可以访问您的数据库。
为数据库选择位置。
新数据库的网址将采用下列格式之一,具体取决于数据库的位置:
(位于DATABASE_NAME.firebaseio.com
us-central1
的数据库) (位于所有其他位置的数据库)DATABASE_NAME.REGION.firebasedatabase.app
点击完成。
如果启用 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 来控制对数据库的访问权限。
后续步骤
了解如何为 Realtime Database 设计数据结构。
准备启动您的应用:
- 在 Google Cloud 控制台中,为您的项目设置预算提醒。
- 在 Firebase 控制台中监控“用量和结算”信息中心,以全面了解您的项目在多个 Firebase 服务中的用量信息。您还可以访问 Realtime Database“使用量”信息中心,查看更详细的使用信息。
- 查看 Firebase 发布核对清单。
已知问题
- 在桌面平台(Windows、Mac、Linux)上,Firebase C++ SDK 使用 REST 访问您的数据库。因此,您必须在桌面上使用 Query::OrderByChild() 声明您使用的索引,否则您的侦听器将会失败。
- 桌面工作流版本的 Realtime Database 不支持离线或持久化。