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");
}
});