AndroidアプリでFirebaseのデータベースを使う
Firebaseの準備
- Android Studioでアプリを作成する
minimum api levelを21以上にする - Firebaseプロジェクトを作成する
 - Firestoreデータベースを作成する
 - Firebaseプロジェクトにアプリを登録する
 
Firebase 構成ファイルを追加
- [Download google-services.json] をクリックしてFirebase Android 構成ファイルを取得する
 - 取得した構成ファイル(google-services.json)をアプリのモジュール(アプリレベル[app])ディレクトリに移動する
 
Androidアプリで Firebase プロダクトを有効にする
プロジェクト レベルのGradle ファイル(build.gradle)の編集
buildscript {
    repositories {
    // 次の行が無ければ追加する
    google()  // Google's Maven repository
    }
    dependencies {
    // ...
    // dependencies次の内に行を追加
    classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
    }
}
allprojects {
    // ...
    repositories {
    // 次の行が無ければ追加する
    google()  // Google's Maven repository
    // ...
    }
}
 
アプリレベルの Gradle ファイル(app/build.gradle)の編集
apply plugin: 'com.android.application'
// 次の行を追加
apply plugin: 'com.google.gms.google-services'  // Google Play services Gradle plugin
 
android {
    // ...
}
Cloud Firestore Android ライブラリを app/build.gradle ファイルに追加
以下のコードをdependencies に追加する
implementation 'com.google.firebase:firebase-firestore:21.4.0'
implementation 'com.google.firebase:firebase-auth:19.1.0'
implementation 'com.google.android.gms:play-services-auth:17.0.0'
バージョンの確認
Androidの最低バージョンを5以上に設定する(APIレベル21以上)
アプリレベルの Gradle ファイル(app/build.gradle)の編集
android {
    ....
    defaultConfig {
        ....
        minSdkVersion 21
       ....
    }
 
Android Firebase Google認証の追加
Android Firebase Google認証を追加する
データベース ルールの作成(例)
Google認証されている場合、読込許可。ドキュメントの所有者、書込み許可
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read : if request.auth != null;
      allow write: if request.auth.uid == userId;
    }
  }
}
Firestoreのテスト
Firestoreを初期化する
FirebaseFirestore db = FirebaseFirestore.getInstance();
データの追加
        Map<String, Object> accessData = new HashMap<>();
        accessData.put("AccessDate", new Timestamp(new Date()));
        accessData.put("Name", "Tom");
        accessData.put("IdNumber", 10253);
        db.collection("users")
                .add(accessData)
                .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                    @Override
                    public void onSuccess(DocumentReference documentReference) {
                        Log.d("myFirestore", "added ID=" + documentReference.getId());
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.w("myFirestore", "Error adding document", e);
                    }
                });
簡単に
        Map<String, Object> accessData = new HashMap<>();
        accessData.put("AccessDate", new Timestamp(new Date()));
        accessData.put("Name", "Tom");
        accessData.put("IdNumber", 10253);
        db.collection("users").add(accessData);
 
データの取得
DocumentReference docRef = db.collection("Search").document("JSON");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                Log.d("myFirestore", "DocumentSnapshot data: " + document.getData());
            } else {
                Log.d("myFirestore", "No such document");
            }
        } else {
            Log.d("myFirestore", "get failed with ", task.getException());
        }
    }
});
 
DocumentReference docRef = db.collection("Search").document("Name");
docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
    @Override
    public void onSuccess(DocumentSnapshot documentSnapshot) {
        String json=documentSnapshot.getString("Data");
    }
});
 
