自分のためのお勉強アウトプット

プログラミングの勉強した内容を自分のために書き残してるだけです

Androidでのfirebase、firestoreの使い方(最初の最初)

firebaseの最初の設定とfirestoreの設定、一番簡単な使い方を書いていきます。
公式のドキュメントは
Add Firebase to Your Android Project  |  Firebase
Get started with Cloud Firestore  |  Firebase
です。

firebaseの初期設定

firebaseのドキュメントやプロジェクト作成時に出てくることをすればOK
だけど、もっと簡潔にまとめる

  1. 設定ファイル(google-services.json)をダウンロードし、app直下に配置する。
  2. プロジェクトのbuild.gradleに設定を追加する。(詳細は下記)
  3. appのbuild.gradleに設定を追加する。(詳細は下記)
  4. 動くかの確認

2.の詳細

追加するのは

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.1.0' // ここ(google-services plugin)
    }
}

allprojects {
    // ...
    repositories {
        // ...
        google() // ここ(Google's Maven repository)
    }
}

それぞれが何なのかは括弧の中の通り

3.の詳細

追加するのは

apply plugin: 'com.android.application'// ここ

android {
  // ...
}

dependencies {
  // ...
  implementation 'com.google.firebase:firebase-core:16.0.3'// ここ

  // Getting a "Could not find" error? Make sure you have
  // added the Google maven respository to your root build.gradle
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'// ここ

動くかの確認

gradleを同期して、ビルドしてdebugでいいので動くことを確認

firestoreの設定

ただ一つ、appのbuild.gradleに以下の行を追加するだけ

dependencies {
  // ...
  implementation 'com.google.firebase:firebase-firestore:15.0.0'
}

あとは、同期してビルドして動くことを確認。
(2018/10/14現在、最新バージョンにするとビルドが失敗する)

firestoreの使い方

  1. インスタンスの初期化
  2. データの追加
  3. データの読み取り

インスタンスの初期化

firestoreとやりとりする前に

val db = FirebaseFirestore.getInstance()

を追加する。(Kotlin)

データの追加

以下のようにする。

 // Create a new user with a first and last names
val dog = HashMap<String, Any>().apply {
    put("name", "ポチ")
    put("breed", "柴犬")
}

// Add a new document with a generated ID
db.collection("dogs")
    .add(dog)
    .addOnSuccessListener { documentReference ->
        Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId())
        Toast.makeText(this, "登録完了しました", Toast.LENGTH_LONG).show();
    }
    .addOnFailureListener { e -> Log.w("MainActivity", "Error adding document", e) }

dbのコレクションは自動で作成されるので、あらかじめ準備しておく必要はない。

データの読み取り

以下の方法で取り出せる。(ただし、この方法ではコレクションの内容をすべて取得する)

db.collection("dogs")
                .get()
                .addOnCompleteListener { task ->
                    if (task.isSuccessful) {
                        for (document in task.result) {
                            Log.d(TAG, document.getId() + " => " + document.getData());
                        }
                    } else {
                        Log.w("loglog", "Error getting documents.", task.exception)
                    }
                }

取得したデータを利用して、ディスプレイに表示させたりしたい場合は、
if (task.isSuccessful) {}
のブロック内で行う必要がある。

おわり

以上が最初の最初の使い方です。
firestoreのもっと高度な使い方やfirebaseのほかの機能の使い方等も勉強したら記事にしていきます。