firebase-database
Android搭載のFirebaseRealtimeデータベース
サーチ…
Androidにリアルタイムデータベースを追加する
インストールと設定を完了して、あなたのアプリをFirebaseに接続します。
これでFirebaseにプロジェクトが作成されます。Firebase Realtime Databaseの依存関係をモジュールレベルの
build.gradleファイルに追加します:
compile 'com.google.firebase:firebase-database:9.2.1'
これで、Androidのリアルタイムデータベースで作業する準備が整いました。
たとえば、 Hello Worldメッセージをmessageキーの下のデータベースに書き込みます。
// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");
setValueを使ってデータを保存する
setValue()メソッドは、子ノードを含む指定された場所のデータを上書きします。
このメソッドを使用すると、次のことができます。
- 使用可能なJSONタイプに対応するパス・タイプは次のとおりです。
- 文字列
- 長いです
- ダブル
- ブール
- Map <String、Object>
- リスト
- カスタムJavaオブジェクトを定義するクラスに、引数を取らず、割り当てられるプロパティのパブリック・ゲッターを持つデフォルトのコンストラクターがある場合は、カスタムJavaオブジェクトを渡します。
これは、CustomObjectの例です。
最初にオブジェクトを定義します。
@IgnoreExtraProperties
public class User {
public String username;
public String email;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String username, String email) {
this.username = username;
this.email = email;
}
次に、データベース参照を取得し、値を設定します。
User user = new User(name, email);
DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("users").child(userId).setValue(user);
Firebaseからのデータ挿入またはデータ検索の例
理解する前に、プロジェクトのためのいくつかのセットアップをファイアベースと統合する必要があります。
Firebaseコンソールでプロジェクトを作成し、コンソールからGoogleの-service.jsonファイルをダウンロードし、プロジェクトのアプリケーション・レベルのモジュールに入れて、 コンソールにプロジェクトを作成のためのリンクをクリックしてください
この後、私たちのプロジェクトにいくつかの依存関係を追加する必要があります。
まずプロジェクトレベルのgradleクラスパスを追加し、
classpath 'com.google.gms:google-services:3.0.0'そして、それがアプリレベルのグラデルでプラグインを適用した後、依存セクションの下にそれを書いて、
apply plugin: 'com.google.gms.google-services従属セクションにアプリレベルのグラデルを追加する必要がある依存関係がさらにあります
compile 'com.google.firebase:firebase-core:9.0.2'compile 'com.google.firebase:firebase-database:9.0.2'firebaseデータベースにデータを挿入し始めます。まず、インスタンスを作成する必要があります。
FirebaseDatabase database = FirebaseDatabase.getInstance();FirebaseDatabaseオブジェクトを作成した後、データベースにデータを挿入するDatabaseReferenceを作成し、
DatabaseReference databaseReference = database.getReference().child("student");ここで
studentはテーブルがデータベースに存在する場合はテーブル名、それ以外の場合はテーブルにデータを挿入します。そうでない場合は学生名の新しいテーブルを作成します。その後、databaseReference.setValue();を使用してデータを挿入できdatabaseReference.setValue();以下のような機能、HashMap<String,String> student=new HashMap<>();student.put("RollNo","1");student.put("Name","Jayesh");databaseReference.setValue(student);ここで私はhasmapとしてデータを挿入していますが、モデルクラスとして設定することもできますが、
firebaseからデータを取得する方法を開始します。ここではデータベースからの読み取り値としてaddListenerForSingleValueEventを使用していますが、
senderRefrence.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if(dataSnapshot!=null && dataSnapshot.exists()){ HashMap<String,String> studentData=dataSnapshot.getValue(HashMap.class); Log.d("Student Roll Num "," : "+studentData.get("RollNo")); Log.d("Student Name "," : "+studentData.get("Name")); } } @Override public void onCancelled(DatabaseError databaseError) { } });
firebaseから値を取得する
- クラスを作成し、インポートを追加して情報を解析する:
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.IgnoreExtraProperties;
//Declaration of firebase references
private DatabaseReference mDatabase;
//Declaration of firebase atributtes
public String uID;
public String username;
public String email;
@IgnoreExtraProperties
public class User {
//Default constructor
public User() {
//Default constructor required for calls to DataSnapshot.getValue(User.class)
mDatabase = FirebaseDatabase.getInstance().getReference();
//...
}
//...
}
-
addListenerForSingleValueEvent()をデータベース参照に追加します。
//Add new imports
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;
//...
public void getUser(String uID){
//The uID it's unique id generated by firebase database
mDatabase.child("users").child(uID).addListenerForSingleValueEvent(
new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
}
});
}
-
onDataChange()イベントのonDataChange()情報でクラスをonDataChange()ます:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Inflate class with dataSnapShot
Users user = dataSnapshot.getValue(Users.class);
//...
}
- 最後に、firebaseクラスのさまざまな属性を通常通り取得できます。
//User inflated
Users user = dataSnapshot.getValue(Users.class);
//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;
ベストプラクティス
- firebaseは、32の異なる子レベルをサポートしています。これは、間違った参照を書くのが簡単で、これを回避して最終的なプライベートリファレンスを作成します。
//Declaration of firebase references
//...
final private DatabaseReference userRef = mDatabase.child("users").child("premium").child("normal").getRef();
//...
public void getUser(String uID){
//Call our reference
userRef.child(uID).addListenerForSingleValueEvent(
new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
}
});
}
-
onCancelled()イベントは、ユーザーがデータベース参照でこの参照にアクセスできないときに呼び出されます。必要に応じてこの例外を制御するための適切なコードを追加します。
詳細については、 公式文書をご覧ください