[JAVA] Von der Einstellung der Firebase-Echtzeitdatenbank bis zur einfachen Dateneingabe (Android-App)

Überblick

Es wird davon ausgegangen, dass Sie über ein Firebase-Konto verfügen. </ font> Die offizielle Erklärung der Firebase-Echtzeitdatenbank lautet hier. Kurz gesagt, es ist eine einfache Datenbank, die auf Echtzeit-Updates spezialisiert ist, und es scheint, dass sie häufig für verschiedene Dinge wie das Chatten verwendet wird.

Erste Schritte mit der Echtzeitdatenbank

Wählen Sie Extras → Firebase aus dem Menü über Android Studio. Der Assistent wird angezeigt. Wählen Sie daher Echtzeitdatenbank. 1.png

Sie sehen einen Link mit Anweisungen zum Einrichten. Start Guide Auch wenn Sie dies nicht lesen, wird die Prozedur mit Zahlen geschrieben, Früher wurde es per Knopfdruck eingerichtet. (Infolgedessen hatte ich diesmal Schwierigkeiten ...) 2.png

Einstellungen der Echtzeitdatenbank

①Connected your app to Firebase Klicken Sie auf [Mit Firebase verbunden], um den Bildschirm zur Auswahl des Google-Kontos anzuzeigen. Wenn Sie die Authentifizierung zulassen, wird automatisch ein Projekt erstellt und mit Firebase verknüpft. Wenn Sie auf Firebase zugreifen, sollte das Projekt angezeigt werden.

②Add the Realtime Database to your app Klicken Sie auf [Echtzeitdatenbank zu Ihrer App hinzufügen]. Folgendes wird automatisch hinzugefügt.

build.gradle(project-level)


// Add Firebase Gradle buildscript dependency
classpath 'com.google.gms:google-services:4.0.1'

app/build.gradle


// Add Firebase plugin for Gradle
apply plugin: 'com.google.gms.google-services'

// build.gradle will include these new dependencies:
compile 'com.google.firebase:firebase-database:16.0.1:15.0.0'

Wenn Sie in diesem Status erstellen, wird es aus irgendeinem Grund nicht kompiliert. implementation 'com.android.support:appcompat-v7:27.1.1' Betrachten Sie den Fehlerinhalt der roten Linie von

---------------------------------- All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.1.1, 26.1.0. Examples include com.android.support:animated-vector-drawable:27.1.1 and com.android.support:support-media-compat:26.1.0 less... (Ctrl+F1) There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your targetSdkVersion). Issue id: GradleCompatible ---------------------------------- implementation 'com.android.support:appcompat-v7:27.1.1' Wann implementation 'com.google.firebase:firebase-database:16.0.1:15.0.0' Es wird gesagt, dass eine andere Version derselben Bibliothek darin gefunden wurde.

Da die Firebase-Datenbank ältere Bibliotheken enthält, habe ich nach den neuesten gesucht und das gleiche Ergebnis erzielt. (Referenz) Firebase Android Release Note Realtime Database com.google.firebase:firebase-database:16.0.3

Sie haben keine andere Wahl, als auf App-kompatibel umzusteigen. implementation 'com.android.support:appcompat-v7:27.1.1' ↓ implementation 'com.android.support:appcompat-v7:26.1.0' CompileSdkVersion und targetSdkVersion wurden in 26 geändert.

Dann der folgende Fehler ---------------------------------- Could not find firebase-database-15.0.0.jar (com.google.firebase:firebase-database:16.0.1). ---------------------------------- Ich habe gehört, dass es kein solches Java-Archiv gibt, und während ich mich fragte, was es bedeutet, es automatisch hinzuzufügen, Start Guide Wenn du liest

app/build.gradle


implementation 'com.google.firebase:firebase-database:16.0.3'

Und die neueste.

Dann

app/build.gradle


implementation 'com.google.firebase:firebase-core:16.0.4'

Wenn Sie es auch einschließen, wird eine Warnung angezeigt. Befolgen Sie diese. Es scheint, dass Googles Entwicklerblog geschrieben hat, dass das Problem der verschiedenen internen Bibliotheksversionen hier bald behoben sein wird.

③Configure Firebase Database Rules Es gibt einen Link zur Authentifizierung und einen Link zum Erstellen von DB-Regeln. Firebase Authentication Versuchen Sie, Datenbankregeln zu verwenden

Eine Authentifizierung ist erforderlich, um die persönlichen Daten des Benutzers streng vertraulich zu behandeln. Ich denke nicht, dass es notwendig ist, es für einfache Chats oder Spielrankings zu verwenden. (vielleicht)

Greifen Sie jetzt mit Ihrem Browser auf die Firebase-Konsole zu und klicken Sie auf der linken Registerkarte auf Datenbank. Klicken Sie auf Datenbank erstellen. Erstellt im Testmodus.

3.png Dann ist die Registerkarte Cloud Firestore [Beta], also Bitte verwenden Sie die Echtzeitdatenbank. 4.png

Wie auch immer, die Gewohnheit, Regeln für DB zu erstellen, ist so groß, dass es schwierig ist, Regeln zu erstellen. Es kann nicht wie eine relationale Datenbank entworfen werden. Detaillierte Regeln finden Sie unter dem folgenden Link.


〇 Über Android ·führen Start Guide Struktur der Datenbank Lesen und Schreiben von Daten auf Android Arbeiten mit Datenlisten unter Android (https://firebase.google.com/docs/database/android/lists-of-data) Offline-Funktionen unter Android aktivieren

·Referenz Paketzusammenfassung

〇Über Sicherheit und Regeln ·führen Informationen zu Firebase-Echtzeitdatenbankregeln Versuchen Sie, Datenbankregeln zu verwenden Datensicherheit (https://firebase.google.com/docs/database/security/securing-data) Benutzerbasierte Sicherheit (https://firebase.google.com/docs/database/security/user-security) Unsicherheit beheben Indexdaten (https://firebase.google.com/docs/database/security/indexing-data) Verwalten von Firebase-Echtzeitdatenbankregeln mit REST (https://firebase.google.com/docs/database/rest/app-management)

·Referenz Firebase Database Security Rules API Firebase Security Rules Regular Expressions Firebase Security Rules for Cloud Storage Reference


Erstellen Sie vorerst eine einfache Regel

Regel


{
  /* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
  "rules": {
    "info":{
      "user": {
        ".read": true,
        ".write": true,
        "name": {
          ".validate": "newData.isString()"
        },
        "age": {
          ".validate": "newData.isNumber()"
        }
      }
    }
  }
}

Es ist eine Regel, die gerade einen Benutzer unter Info und Name (String-Typ) und Alter (Nummer-Typ) darunter erstellt hat. Der Grund für die Vertiefung der Hierarchie besteht darin, die Regeln für die Angabe von Pfaden verständlicher zu machen.

④Write to your database Ich werde die Daten sofort schreiben. Lesen und Schreiben von Daten auf Android Ist leicht zu verstehen. Es ist möglich, die Daten einzeln zu registrieren, dies ist jedoch recht mühsam, sodass die Registrierung und Erfassung nach Klassen einfacher ist.

** 〇 Klasse erstellen ** `(Hinweis) Die Bedingung ist, dass die Klasse, die das Objekt definiert, einen Standardkonstruktor hat, der keine Argumente akzeptiert, und einen öffentlichen Getter für die zuzuweisende Eigenschaft. ``

User


public static class User {
    public String name;
    public Integer age;

    //Leere Konstruktordeklaration erforderlich
    public User() {
    }

    public User(String _name, Integer _age) {
        name = _name;
        age = _age;
    }
    public String getName(){
        return name;
    }
    public Integer getAge(){
        return age;
    }
}

** 〇 Datenregistrierung **

register


User user = new User( "Yamada Taro",30 );
//Holen Sie sich eine Instanz
FirebaseDatabase database = FirebaseDatabase.getInstance();

//Referenz erhalten, indem Sie den Dateipfad angeben
DatabaseReference refName = database.getReference("info/user");
//Daten registrieren
refName.setValue(user);

Betrachten der Firebase-Daten 5.png

Sie sind gut registriert.

⑤Read from your database Lesen Sie die Daten. Lesen und Schreiben von Daten auf Android als Handbuch → Administration → Daten abrufen Kann leichter zu verstehen sein. Die Beispielsätze im Dokument sind überladen und schwer zu verstehen ...

Um es einfach zu schreiben: Durch Festlegen eines Ereignis-Listeners können Sie alle abrufen oder aktualisieren. Derzeit sind nur alle Akquisitionen aufgeführt.

** 〇 Datenerfassung **

reader


//Holen Sie sich eine Instanz
FirebaseDatabase database = FirebaseDatabase.getInstance();
//Referenz erhalten, indem Sie den Dateipfad angeben
final DatabaseReference refUser = database.getReference("info");
refUser.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {

        User user = dataSnapshot.getValue(User.class);
        Log.w( "DEBUG_DATA", "user.name = " + user.name);
        Log.w( "DEBUG_DATA", "user.age = " + user.age);
    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {
    }

    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {
    }

    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

⑥Optional: Configure ProGuard Seien Sie vorsichtig, wenn Sie den Pro Guard einstellen. Ich benutze es nicht, also werde ich es weglassen ...

When using Firebase Realtime Database in your app along with ProGuard you need to consider how your model objects will be serialized and deserialized after obfuscation. If you use DataSnapshot.getValue(Class) or DatabaseReference.setValue(Object) to read and write data you will need to add rules to the proguard-rules.pro file:

----- # Add this global rule -keepattributes Signature

# This rule will properly ProGuard all the model classes in # the package com.yourcompany.models. Modify to fit the structure # of your app. -keepclassmembers class com.yourcompany.models.** { *; } -----

⑦Preapre for Launch Überprüfen Sie die Checkliste. Keine große Sache.

⑧Next Steps Der Inhalt ist, dass Sie mehrere Datenbanken verwenden können. Mit mehreren Datenbanken skalieren Ich habe gehört, dass Mercari eine beträchtliche Anzahl von Datenbanken verknüpft hat, um eine große Menge an Chat zu realisieren. Es ist eine wirklich serverlose Ära.

Nur die Basisversion ist lang geworden. So wie es ist, gibt es nur einfache Daten ein und erfasst sie, und es scheint, dass es nutzlos ist. Die erweiterte Version wird später beschrieben.

Recommended Posts

Von der Einstellung der Firebase-Echtzeitdatenbank bis zur einfachen Dateneingabe (Android-App)
Erstellen Sie ein klares Zeitranking mit der Echtzeitdatenbank von Firebase (Android-App)
Java, das Daten von Android zu Jetson Nanos ROS überspringt
Android App, die Bilder aus der Galerie auswählt und anzeigt
Ich habe versucht, eine einfache Karten-App in Android Studio zu erstellen