Premiers pas avec firebase-database

Ajoutez Firebase à votre projet Android

Voici les étapes nécessaires pour créer un projet Firebase et le connecter à une application Android.

Ajoutez Firebase à votre application

  1. Créez un projet Firebase dans la [console Firebase][1] et cliquez sur Créer un nouveau projet.

  2. Cliquez sur Ajouter Firebase à votre application Android et suivez les étapes de configuration.

  3. Lorsque vous y êtes invité, saisissez le nom du package de votre application. Il est important d’entrer le nom du package utilisé par votre application ; cela ne peut être défini que lorsque vous ajoutez une application à votre projet Firebase.

  4. À la fin, vous téléchargerez un fichier google-services.json. Vous pouvez télécharger à nouveau ce fichier à tout moment. (ce fichier se trouve sous les paramètres du projet dans la console Firebase).

  5. Basculez Android Studio View vers Project et collez le fichier google-service.json dans le dossier de l’application

L’étape suivante consiste à ajouter le SDK pour intégrer les bibliothèques Firebase dans le projet.

Ajouter le SDK

Pour intégrer les bibliothèques Firebase dans l’un de vos propres projets, vous devez effectuer quelques tâches de base pour préparer votre projet Android Studio. Vous l’avez peut-être déjà fait dans le cadre de l’ajout de Firebase à votre application.

1. Ajoutez des règles à votre fichier “build.gradle” de niveau racine, pour inclure le plugin Google-services :

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.1.1'
    }
}

Ensuite, dans le fichier Gradle de votre module (généralement app/build.gradle), ajoutez la ligne apply plugin en bas du fichier pour activer le plugin Gradle :

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  compile 'com.google.firebase:firebase-core:9.4.0'//THIS IS FOR ANALYTICS
  compile "com.google.firebase:firebase-database:11.0.2" 
}

// BELOW STATEMENT MUST BE WRITTEN IN BOTTOM
apply plugin: 'com.google.gms.google-services'

Remarques:

  • Les données ne peuvent pas être lues/écrites sans authentification. Si vous le voulez sans authentification. Modifiez les règles dans la console Firebase de la base de données.

    { “rules”: { “.read”: true, “.write”: true } }

  • Ajouter une autorisation Internet dans Manifest

  • Mettre à niveau les services Google Play et le référentiel Google

[1] : https://firebase.google.com/console/ [2] : https://support.google.com/firebase/answer/7015592

Écrire une valeur simple dans la base de données

Commencez par terminer [l’installation et la configuration][1] pour connecter votre application à Firebase. Ensuite, de n’importe où dans votre classe, vous pouvez écrire :

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

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

Il écrira Hello, Wold! dans le nœud message, comme indiqué ci-dessous :

"your-project-parent" : {
    "message" : "Hello, World!"
}

Explication

FirebaseDatabase database = FirebaseDatabase.getInstance();

Le code ci-dessus affectera l’instance FirebaseDatabase dans l’objet database pour une utilisation ultérieure.

DatabaseReference myRef = database.getReference("message");

Le code ci-dessus référencera l’objet myRef dans l’enfant "message" du parent de votre projet (dans cet exemple, il s’agit de "your-project-parent"). Il s’agit donc de "votre-projet-parent/message"

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

Le code ci-dessus définira "Hello, World!" dans le chemin référencé par myRef

[1] : https://www.wikiod.com/fr/firebase-database/premiers-pas-avec-firebase-database#Ajouter Firebase à votre projet Android

Mapper automatiquement le modèle personnalisé à la structure de données

Après avoir défini quelques données dans la base de données et obtenu une structure composée de plusieurs nœuds comme celui-ci;

"user" : {
    "-KdbKcU2ptfYF2xKb5aO" : {
      "firstName" : "Arthur",
      "lastName" : "Schopenhauer",
      "userName" : "AphorismMan",
      "phone" : "+9022-02-1778",
      "gender": "M",
      "age" : 25
    },
    "-KdbQFjs9BDviuqQVHjY" : {
      "firstName" : "Werner",
      "lastName" : "Heisenberg",
      "userName" : "whereAmI",
      "phone" : "+9005-12-1901",
      "gender": "M",
      "age" : 75
    }
  }

vous pouvez catégoriser les structures de données.

Créer une classe

Créez une classe de modèle à définir sur la base de données.

@IgnoreExtraProperties
public class User {
    public String firstName;
    public String lastName;
    public String userName;
    public String phone;
    public String gender;
    public int age;

    public User() {
    }

    public User(String firstName, String lastName, String userName, String phone, String gender, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.userName = userName;
        this.phone = phone;
        this.gender = gender;
        this.age = age;
    }
}

Quelques points à retenir lors de la création d’une classe de modèle que vous souhaitez mapper à vos données :

  1. Vous devez avoir un constructeur vide
  2. La portée des variables/champs doit être publique, afin que le [DataSnapshot][1] revenant de la base de données puisse accéder à ces champs. Si vous ne le faites pas, lorsque vous souhaitez obtenir des données, DataSnapshot ne peut pas accéder à votre modèle en rappel et cela provoquera une exception.
  3. Les noms des variables/champs doivent correspondre à ceux de votre structure de données.

Envoi vers Firebase

Créer un objet utilisateur

User user = new User ( "Arthur","Schopenhauer","AphorismMan","+9022-02-1778","M",25)

et référence

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();

Vous avez maintenant la référence de votre base de données. Créez un nœud user avec databaseReference.child("user"). Si vous faites .push() vos modèles seront localisés sous des identifiants uniques créés aléatoirement comme ci-dessus, "-KdbKcU2ptfYF2xKb5aO", "-KdbQFjs9BDviuqQVHjY".

databaseReference.child("user").push().setValue(user, new DatabaseReference.CompletionListener() {
            @Override
            public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                Toast.makeText(getActivity(), "User added.", Toast.LENGTH_SHORT).show();

            }
        });

Si vous souhaitez définir vos données sous votre clé spécifique, faites-le avec .child("yourSpecificKey") au lieu de .push().

databaseReference.child("user").child("yourSpecificKey").setValue(user,...

[1] : https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot