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

アプリを Firebase に接続する

まだ追加していない場合は、Firebase を Android プロジェクトに追加します

プロジェクト レベルの build.gradle ファイルの buildscript セクションと allprojects セクションの両方に Google の Maven リポジトリを組み込みます。

データベースを作成する

  1. まだ Firebase プロジェクトを作成していない場合は作成します。Firebase コンソールで [プロジェクトを追加] をクリックし、画面の指示に沿って、Firebase プロジェクトを作成するか、既存の GCP プロジェクトに Firebase サービスを追加します。

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

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

    テストモード

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

    ウェブ、iOS、Android SDK を使用する場合は、テストモードを選択します。

    ロックモード

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

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

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

アプリに Realtime Database SDK を追加する

モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)に Realtime Database の Android ライブラリの依存関係を追加します。

Java

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

Kotlin+KTX

implementation 'com.google.firebase:firebase-database-ktx:19.4.0'

Realtime Database のルールを構成する

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

データベースに書き込む

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

Java

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

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

Kotlin+KTX

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

myRef.setValue("Hello, World!")

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

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

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

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

Java

// 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+KTX

// 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>()
        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.** {
      *;
    }

リリース準備

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

次のステップ