firebase-database
База данных FirebaseRealtime с Android
Поиск…
Добавить базу данных реального времени в Android
Завершите установку и настройку, чтобы подключить ваше приложение к Firebase.
Это создаст проект в Firebase.Добавьте зависимость для базы данных Firebase Realtime к вашему файлу
build.gradleуровнеbuild.gradle:
compile 'com.google.firebase:firebase-database:9.2.1'
- Настройка правил базы данных Firebase
Теперь вы готовы работать с базой данных Realtime в 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 следующим образом:
- строка
- Долго
- двойной
- логический
- Карта <String, Object>
- Список
- Передайте пользовательский объект 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.
Создайте свой проект в Firebase Console и загрузите файл google-service.json с консоли и поместите его в модуль уровня приложения вашего проекта. Следуйте ссылке для создания проекта на консоли.
После этого нам нужно добавить некоторую зависимость в нашем проекте,
Сначала добавьте путь класса в градиент уровня проекта,
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();как следующая,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():
@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()вызывается, когда пользователь не имеет доступа к этой ссылке по правилам базы данных. Добавьте соответствующий код для управления этим исключением, если вам нужно.
Для получения дополнительной информации посетите официальную документацию