Cloud Firestore をお試しください。Firebase と Google Cloud Platform からスケーラブルで、フレキシブルなデータベースを利用できるようになりました。詳しくは、Cloud Firestore のドキュメントをご覧ください。

Android でのインストールと設定

アプリを Firebase に接続する

  1. Firebase SDK をインストールします
  2. Firebase コンソールで、Firebase プロジェクトにアプリを追加します。

アプリに Realtime Database を追加する

Realtime Database への依存関係をアプリレベルの build.gradle ファイルに追加します。

  implementation 'com.google.firebase:firebase-database:16.1.0'

Firebase Database ルールを構成する

Realtime Database には宣言型のルール言語が用意されているため、データの構造化方法、インデックスの作成方法、データの書き込みと読み取りのタイミングを定義できます。

認証ユーザーのみがデータの読み取りと書き込みができるように、データベースへの読み書きアクセスはデフォルトで制限されています。Authentication を設定せずに開始するには、公開アクセスルールを構成します。この場合、アプリを使用しない人を含むあらゆる人々にデータベースが公開されるので、認証の設定時には、再度データベースへのアクセスを必ず制限してください。

データベースに書き込む

getInstance()を使用してデータベースのインスタンスを取得し、書き込み先の場所を参照します。

Java
Android

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

Kotlin
Android

// Write a message to the database
val database = FirebaseDatabase.getInstance()
val myRef = database.getReference("message")

myRef.setValue("Hello, World!")

このように、Java オブジェクトを含むさまざまなデータ型をデータベースに保存できます。オブジェクトを保存すると、ゲッターからのレスポンスはこの場所の子として保存されます。

データベースから読み込む

アプリデータをリアルタイムで更新するには、作成した参照に ValueEventListener を追加する必要があります。

この onDataChange() メソッドはリスナーがアタッチされたときに 1 回トリガーされます。さらに、データ(子も含む)が変更されると、そのたびに再びトリガーされます。

Java
Android

// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // This method is called once with the initial value and again
        // whenever data at this location is updated.
        String value = dataSnapshot.getValue(String.class);
        Log.d(TAG, "Value is: " + value);
    }

    @Override
    public void onCancelled(DatabaseError error) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException());
    }
});

Kotlin
Android

// Read from the database
myRef.addValueEventListener(object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        // This method is called once with the initial value and again
        // whenever data at this location is updated.
        val value = dataSnapshot.getValue(String::class.java)
        Log.d(TAG, "Value is: $value")
    }

    override fun onCancelled(error: DatabaseError) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException())
    }
})

ProGuard を構成する(省略可)

アプリで ProGuard と一緒に Firebase Realtime Database を使用する場合、難読化後にモデル オブジェクトをどのようにシリアル化および逆シリアル化するかを検討する必要があります。<DataSnapshot.getValue(Class) または DatabaseReference.setValue(Object) を使用してデータの読み込みおよび書き込みを行うには、proguard-rules.pro ファイルにルールを追加する必要があります。

    # Add this global rule
    -keepattributes Signature

    # This rule will properly ProGuard all the model classes in
    # the package com.yourcompany.models. Modify to fit the structure
    # of your app.
    -keepclassmembers class com.yourcompany.models.** {
      *;
    }

リリース準備

アプリをリリースする前に、リリース チェックリストに従って、アプリの準備が整っているかを確認することをおすすめします。

次のステップ

フィードバックを送信...

Firebase Realtime Database
ご不明な点がありましたら、Google のサポートページをご覧ください。