База данных Firebase Realtime Database хранит и синхронизирует данные, используя облачную базу данных NoSQL. Данные синхронизируются между всеми клиентами в режиме реального времени и остаются доступными, даже если ваше приложение отключается от сети.
Прежде чем начать
Прежде чем начать использовать Firebase Realtime Database , вам необходимо:
Зарегистрируйте свой проект на C++ и настройте его для использования Firebase.
Если ваш проект на C++ уже использует Firebase, значит, он уже зарегистрирован и настроен для работы с Firebase.
Добавьте Firebase C++ SDK в свой проект на C++.
Обратите внимание, что добавление Firebase в ваш проект C++ включает в себя задачи как в консоли Firebase , так и в открытом проекте C++ (например, вы загружаете файлы конфигурации Firebase из консоли, а затем перемещаете их в свой проект C++).
Создайте базу данных
Перейдите в раздел Realtime Database в консоли Firebase . Вам будет предложено выбрать существующий проект Firebase. Следуйте инструкциям по созданию базы данных.
Выберите режим запуска для ваших Firebase Security Rules :
- Тестовый режим
Отлично подходит для начала работы с клиентскими библиотеками для мобильных и веб-приложений, но позволяет любому пользователю читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом « Понимание правил Firebase Realtime Database» .
Для начала работы с веб-версией, Apple SDK или Android выберите тестовый режим.
- Режим блокировки
Запрещает все операции чтения и записи с мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений по-прежнему смогут получать доступ к вашей базе данных.
Выберите местоположение для базы данных.
В зависимости от местоположения базы данных , URL-адрес новой базы данных будет иметь один из следующих форматов:
DATABASE_NAME .firebaseio.com(для баз данных в регионеus-central1)DATABASE_NAME . REGION .firebasedatabase.app(для баз данных во всех остальных локациях)
Нажмите «Готово» .
При включении режима Realtime Database также активируется API в Cloud API Manager .
Создайте и инициализируйте приложение firebase::App.
Прежде чем получить доступ к Realtime Database , вам необходимо создать и инициализировать 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::database::Database
Объект firebase::database::Database является точкой входа для C++ SDK Firebase Realtime Database .
::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 не поддерживает работу в автономном режиме и сохранение данных.