Firebase Realtime Database for C++ を使ってみる

Firebase Realtime Database は NoSQL クラウド データベースを使用してデータの保管と同期を行います。データはすべてのクライアントにわたってリアルタイムで同期され、アプリがオフラインになっても利用可能な状態が維持されます。

始める前に

Firebase Realtime Database を使用するには、事前に次の作業を行っておく必要があります。

  • C++ プロジェクトを登録して Firebase を使用するように構成します。

    C++ プロジェクトですでに Firebase を使用している場合、この登録と構成はすでに行われています。

  • Firebase C++ SDK を C++ プロジェクトに追加します。

Firebase を C++ プロジェクトに追加するには、Firebase コンソールと開いている C++ プロジェクトの両方でこのタスクを行う必要があります(コンソールから Firebase 構成ファイルをダウンロードして C++ プロジェクトに移動するなど)。

データベースを作成する

  1. Firebase コンソールの [Realtime Database] セクションに移動します。既存の Firebase プロジェクトを選択するよう求められます。データベース作成ワークフローに従います。

  2. Firebase セキュリティ ルールの開始モードを選択します。

    テストモード

    モバイルおよびウェブ クライアント ライブラリを使用する場合に適していますが、すべてのユーザーがデータを読み取り、上書きできます。テストが終わったら、Firebase Realtime Database セキュリティ ルールを理解するを確認してください。

    Web SDK、Apple SDK、Android SDK を使用する場合は、テストモードを選択します。

    ロックモード

    モバイルおよびウェブ クライアントからのすべての読み書きを拒否します。認証されたアプリケーション サーバーは引き続きデータベースにアクセスできます。

  3. データベースのロケーションを選択します。

    データベースのロケーションに応じて、新しいデータベースの URL は次のいずれかの形式になります。

    • DATABASE_NAME.firebaseio.comus-central1 のデータベースの場合)

    • DATABASE_NAME.REGION.firebasedatabase.app(他のすべてのロケーションのデータベースの場合)

  4. [完了] をクリックします。

Realtime Database を有効にすると、Cloud API Manager で API も有効になります。

firebase::App を作成して初期化する

Realtime Database にアクセスするには、事前に firebase::App を作成して初期化する必要があります。

firebase::App のヘッダー ファイルを追加します。

#include "firebase/app.h"

Android

firebase::App を作成し、引数として JNI 環境と jobject 参照を Java アクティビティに渡します。

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 のデスクトップ ワークフロー バージョンでは、オフラインや永続性はサポートされていません。