Поиск…


Добавить базу данных реального времени в Android

  1. Завершите установку и настройку, чтобы подключить ваше приложение к Firebase.
    Это создаст проект в Firebase.

  2. Добавьте зависимость для базы данных Firebase Realtime к вашему файлу build.gradle уровне build.gradle :

compile 'com.google.firebase:firebase-database:9.2.1'
  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() перезаписывает данные в указанном месте, включая любые дочерние узлы.

Вы можете использовать этот метод для:

  1. Типы пропуска, которые соответствуют доступным типам JSON следующим образом:
  • строка
  • Долго
  • двойной
  • логический
  • Карта <String, Object>
  • Список
  1. Передайте пользовательский объект 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.

  1. Создайте свой проект в Firebase Console и загрузите файл google-service.json с консоли и поместите его в модуль уровня приложения вашего проекта. Следуйте ссылке для создания проекта на консоли.

  2. После этого нам нужно добавить некоторую зависимость в нашем проекте,

  • Сначала добавьте путь класса в градиент уровня проекта,

    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

  1. Создайте класс и добавьте импорт для анализа информации:
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();

        //...
    }

    //...
}
  1. Добавьте 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
            }
    });
}
  1. Надуйте наш класс информацией о onDataChange() в onDataChange() :
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            //Inflate class with dataSnapShot
            Users user = dataSnapshot.getValue(Users.class);

            //...
        }
  1. Наконец, мы можем получить различные атрибуты из класса firebase, как обычно:
//User inflated
Users user = dataSnapshot.getValue(Users.class);

//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;

Лучшие практики

  1. 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
            }
    });
}
  1. onCancelled() вызывается, когда пользователь не имеет доступа к этой ссылке по правилам базы данных. Добавьте соответствующий код для управления этим исключением, если вам нужно.

Для получения дополнительной информации посетите официальную документацию



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow