[JAVA] De la configuration de Firebase Realtime Database à la simple saisie de données (application Android)

Aperçu

Il est supposé que vous disposez d'un compte Firebase. </ font> L'explication officielle de Firebase Realtime Database est ici. En bref, il s'agit d'une simple base de données spécialisée pour les mises à jour en temps réel, et il semble qu'elle soit souvent utilisée pour diverses choses comme le chat.

Comment démarrer avec la base de données en temps réel

Sélectionnez Outils → Firebase dans le menu au-dessus d'Android Studio. L'Assistant s'affiche, sélectionnez donc Base de données en temps réel. 1.png

Vous verrez un lien avec des instructions sur la façon de le configurer. Guide de démarrage Même si vous ne lisez pas ceci, la procédure est écrite avec des nombres, Auparavant, il était configuré en cliquant sur un bouton. (Du coup, j'ai eu du mal cette fois ...) 2.png

Paramètres de la base de données en temps réel

①Connected your app to Firebase Lorsque vous cliquez sur [Connecté à Firebase], l'écran de sélection de compte Google s'affiche et si vous autorisez l'authentification, un projet sera automatiquement créé et lié à Firebase. Lorsque vous accédez à Firebase, vous devriez voir le projet.

②Add the Realtime Database to your app Cliquez sur [Ajouter la base de données en temps réel à votre application] et les éléments suivants seront ajoutés automatiquement.

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'

Si vous construisez dans cet état, il ne se compilera pas pour une raison quelconque. implementation 'com.android.support:appcompat-v7:27.1.1' En regardant le contenu d'erreur de la ligne rouge de

---------------------------------- 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' Quand implementation 'com.google.firebase:firebase-database:16.0.1:15.0.0' On dit qu'une autre version de la même bibliothèque a été trouvée à l'intérieur.

Puisque la base de données firebase contient des bibliothèques plus anciennes, j'ai recherché la dernière et j'ai obtenu le même résultat. (Référence) Firebase Android Release Note Realtime Database com.google.firebase:firebase-database:16.0.3

Il n'y a pas d'autre choix que de passer à l'application compatible. implementation 'com.android.support:appcompat-v7:27.1.1' ↓ implementation 'com.android.support:appcompat-v7:26.1.0' Changement de compileSdkVersion et targetSdkVersion à 26.

Puis l'erreur suivante ---------------------------------- Could not find firebase-database-15.0.0.jar (com.google.firebase:firebase-database:16.0.1). ---------------------------------- J'ai entendu dire qu'il n'y a pas d'archive java de ce type, et tout en me demandant ce que signifie l'ajouter automatiquement Guide de démarrage Quand tu lis

app/build.gradle


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

Et le dernier.

Puis

app/build.gradle


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

Si vous l'incluez également, un avertissement apparaîtra, alors suivez-le. Il semble que le blog des développeurs de Google ait écrit que le problème des différentes versions de bibliothèques internes ici sera bientôt résolu.

③Configure Firebase Database Rules Il existe un lien sur l'authentification et un lien pour créer des règles de base de données. Firebase Authentication Essayez d'utiliser les règles de base de données

L'authentification est requise pour rendre les informations personnelles de l'utilisateur hautement confidentielles. Je ne pense pas qu'il soit nécessaire de l'utiliser pour de simples discussions ou des classements de jeux. (peut être)

Maintenant, accédez à la console Firebase avec votre navigateur et cliquez sur Base de données dans l'onglet de gauche. Cliquez sur Créer une base de données. Créé en mode test.

3.png Ensuite, l'onglet est Cloud Firestore [Beta], donc Veuillez utiliser la base de données en temps réel. 4.png

Quoi qu'il en soit, l'habitude de créer des règles pour DB est si grande qu'elle est difficile à créer. Il ne peut pas être conçu comme une base de données relationnelle. Voir les liens ci-dessous pour les règles détaillées.


〇 À propos d'Android ·guider Guide de démarrage Structure de la base de données Lire et écrire des données sur Android Utilisation de listes de données sur Android (https://firebase.google.com/docs/database/android/lists-of-data) Activer les fonctionnalités hors connexion sur Android

·référence Résumé du package

〇À propos de la sécurité et des règles ·guider À propos des règles de base de données Firebase Realtime Essayez d'utiliser les règles de base de données Sécurité des données (https://firebase.google.com/docs/database/security/securing-data) Sécurité basée sur l'utilisateur (https://firebase.google.com/docs/database/security/user-security) Résoudre l'insécurité Données d'index (https://firebase.google.com/docs/database/security/indexing-data) Gérez les règles de Firebase Realtime Database avec REST (https://firebase.google.com/docs/database/rest/app-management)

·référence Firebase Database Security Rules API Firebase Security Rules Regular Expressions Firebase Security Rules for Cloud Storage Reference


Créez une règle simple pour le moment

règle


{
  /* 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()"
        }
      }
    }
  }
}

C'est une règle qui vient de créer l'utilisateur sous info et nom (type de chaîne) et âge (type de nombre) en dessous. La raison de l'approfondissement de la hiérarchie est de faciliter la compréhension des règles de spécification des chemins.

④Write to your database J'écrirai les données immédiatement. Lire et écrire des données sur Android Est facile à comprendre. Il est possible d'enregistrer les données individuellement, mais c'est assez gênant, il est donc plus facile de s'enregistrer et d'acquérir par classe.

** 〇 Créer une classe ** `(Note) La condition est que la classe qui définit l'objet a un constructeur par défaut qui ne prend aucun argument et un getter public pour la propriété à affecter. ''

User


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

    //Déclaration de constructeur vide requise
    public User() {
    }

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

** 〇 Enregistrement des données **

register


User user = new User( "Yamada Taro",30 );
//Obtenez une instance
FirebaseDatabase database = FirebaseDatabase.getInstance();

//Obtenir une référence en spécifiant le chemin du fichier
DatabaseReference refName = database.getReference("info/user");
//Enregistrer les données
refName.setValue(user);

Consulter les données Firebase 5.png

Vous êtes bien inscrit.

⑤Read from your database Lisez les données. Lire et écrire des données sur Android que Guide → Administration → Obtenir des données Peut être plus facile à comprendre. Les exemples de phrases dans le document sont encombrés et difficiles à comprendre ...

Pour l'écrire simplement, en définissant un écouteur d'événement, vous pouvez tout récupérer ou mettre à jour. Pour le moment, seules toutes les acquisitions sont répertoriées.

** 〇 Acquisition de données **

reader


//Obtenez une instance
FirebaseDatabase database = FirebaseDatabase.getInstance();
//Obtenir une référence en spécifiant le chemin du fichier
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 Soyez prudent lors du réglage de la protection pro. Je ne l'utilise pas, alors je vais l'omettre ...

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 Vérifiez-le dans Liste de contrôle. Pas grand-chose.

⑧Next Steps Le contenu est que vous pouvez utiliser plusieurs bases de données. Échelle avec plusieurs bases de données J'ai entendu dire que Mercari avait lié un nombre considérable de bases de données pour réaliser une énorme quantité de discussions. C'est une ère vraiment sans serveur.

Seule la version de base est devenue longue. Dans l'état actuel des choses, il ne s'agit que de saisir et d'acquérir des données simples, et il semble que cela ne sert à rien. La version avancée sera décrite plus tard.

Recommended Posts

De la configuration de Firebase Realtime Database à la simple saisie de données (application Android)
Créez un classement temporel clair avec la base de données en temps réel de Firebase (application Android)
Java qui ignore les données d'Android vers le ROS de Jetson Nano
Application Android qui sélectionne et affiche des images de la galerie
J'ai essayé de créer une application cartographique simple dans Android Studio