Suche…


Fügen Sie die Echtzeitdatenbank in Android hinzu

  1. Schließen Sie die Installation und das Setup ab , um Ihre App mit Firebase zu verbinden.
    Dadurch wird das Projekt in Firebase erstellt.

  2. Fügen Sie der build.gradle Datei auf Modulebene die Abhängigkeit für die Firebase-Echtzeitdatenbank build.gradle :

compile 'com.google.firebase:firebase-database:9.2.1'
  1. Konfigurieren Sie die Firebase-Datenbankregeln

Jetzt können Sie mit der Echtzeitdatenbank in Android arbeiten.

Beispielsweise schreiben Sie eine Hello World Nachricht unter dem message in die Datenbank.

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

Daten mit setValue speichern

Die setValue() -Methode überschreibt Daten an der angegebenen Position, einschließlich aller setValue() Knoten.

Sie können diese Methode verwenden, um:

  1. Übergeben Sie Typen, die den verfügbaren JSON-Typen entsprechen, wie folgt:
  • String
  • Lange
  • Doppelt
  • Boolean
  • Map <String, Object>
  • Liste
  1. Übergeben Sie ein benutzerdefiniertes Java-Objekt, wenn die Klasse, die es definiert, über einen Standardkonstruktor verfügt, der keine Argumente enthält und öffentliche Eigenschaften für die zuzuweisenden Eigenschaften vorliegen.

Dies ist ein Beispiel mit einem CustomObject.
Definieren Sie zuerst das Objekt.

@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;
    }

Rufen Sie dann die Datenbankreferenz ab und legen Sie den Wert fest:

   User user = new User(name, email);
   DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
   mDatabase.child("users").child(userId).setValue(user);

Beispiel für das Einfügen von Daten oder das Abrufen von Daten aus Firebase

Bevor Sie verstehen, müssen Sie einige Einstellungen für die Projektintegration in Firebase beachten.

  1. Erstellen Sie Ihr Projekt in Firebase Console und laden Sie die Datei google-service.json von der Konsole herunter und fügen Sie sie in das App-Level-Modul Ihres Projekts ein. Folgen Sie dem Link zum Erstellen von Projekten in der Konsole

  2. Danach müssen wir einige Abhängigkeiten in unserem Projekt hinzufügen.

  • Fügen Sie zunächst den Klassenpfad in unserem Projektlevel hinzu.

    classpath 'com.google.gms:google-services:3.0.0'

  • Und danach Plugin in App Level Gradel anwenden, schreiben Sie es in den Abhängigkeitsbereich,

    apply plugin: 'com.google.gms.google-services

  • Es gibt mehr Abhängigkeiten, die das Hinzufügen eines Grads der App-Ebene im Abhängigkeitsbereich erfordern

    compile 'com.google.firebase:firebase-core:9.0.2'

    compile 'com.google.firebase:firebase-database:9.0.2'

  • Starten Sie nun das Einfügen von Daten in die Firebase-Datenbank. Zuerst müssen Sie eine Instanz von erstellen

    FirebaseDatabase database = FirebaseDatabase.getInstance();

    Nach der Erstellung des FirebaseDatabase-Objekts erstellen wir unsere DatabaseReference zum Einfügen von Daten in die Datenbank.

    DatabaseReference databaseReference = database.getReference().child("student");

    Hier ist student der Tabellenname, wenn eine Tabelle in der Datenbank vorhanden ist, und fügt die Daten in die Tabelle ein. Ansonsten erstellen Sie eine neue mit dem Schülernamen. Danach können Sie Daten mit databaseReference.setValue(); einfügen databaseReference.setValue(); funktionieren wie folgt,

    HashMap<String,String> student=new HashMap<>();

    student.put("RollNo","1");

    student.put("Name","Jayesh");

    databaseReference.setValue(student);

    Hier füge ich Daten als hasmap ein. Sie können aber auch als Modellklasse festlegen,

  • Starten Sie den Abruf von Daten aus der Firebase. Wir verwenden hier addListenerForSingleValueEvent für den Lesewert aus der Datenbank.

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

Holen Sie sich Werte von Firebase

  1. Klasse erstellen und Importe hinzufügen, um Informationen zu analysieren:
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. Fügen Sie addListenerForSingleValueEvent() zu unserer Datenbankreferenz hinzu:
//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. Aufblasen unserer Klasse mit Informationen zu Firebase im onDataChange() Ereignis:
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

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

            //...
        }
  1. Schließlich können wir wie üblich verschiedene Attribute von der Firebase-Klasse erhalten:
//User inflated
Users user = dataSnapshot.getValue(Users.class);

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

Best Practices

  1. Die Firebase unterstützt 32 verschiedene untergeordnete Ebenen. Dann ist es einfach, falsche Referenzen zu schreiben.
//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. Das onCancelled() Ereignis wird aufgerufen, wenn der Benutzer über Datenbankregeln keinen Zugriff auf diese Referenz hat. Fügen Sie erforderlichenfalls den entsprechenden Code hinzu, um diese Ausnahme zu steuern.

Weitere Informationen finden Sie in der offiziellen Dokumentation



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow