Année universitaire 2022/2023
TP4 : Les bases de données sous Android : Firebase
Développement Mobile
Génie Informatique – Semestre S5
1. Intégration de Firebase
Avant de commencer à coder, nous allons créer un nouveau projet sur le site de
Firebase. Pour cela, rendez-vous sur l'adresse [Link] puis
cliquez sur le bouton "Ajouter un projet" (1). Ensuite, à l'intérieur de la fenêtre qui
apparaît, renseignez le nom de votre projet et le pays où vous vous situez (2).
Un identifiant unique pour votre projet va être automatiquement généré à partir du
nom de celui-ci. Cliquez ensuite sur le bouton "Créer un projet".
Pour relier Firebase à votre application Android plusieurs moyens existent : Soit
via Android Studio de manière automatisée, soit via l'interface web de Firebase.
La meilleure et d’utiliser l’interface web de Firebase.. Ainsi, depuis la page d'accueil de
votre projet Firebase, cliquez sur "Paramètres du projet".
Une nouvelle page va apparaître. En bas de celle-ci, cliquez sur le bouton "Ajouter
Firebase à votre application Android". Une nouvelle fenêtre s'affiche :
Année universitaire 2022/2023
Renseignez-y les champs suivants :
Nom du package Android : Dans notre cas, c'est
"[Link].ab_sadiq.productmanager2". Vous pouvez également retrouver cet
identifiant dans le manifeste de votre application après la propriété applicationId .
Pseudo de l'application : Facultatif, mais j'ai tout de même renseigné ici un nom
me permettant de plus facilement retrouver l'application Android dans l'interface
web de Firebase.
Certificat de signature de débogage SHA-1 : Facultatif, mais nous allons tout de
même le paramétrer en utilisant la documentation de Google.
Pour générer cette empreinte SHA-1, nous allons ouvrir une console et utiliser l'utilitaire
keytool. Puis, nous exécuterons l'une des lignes de code suivantes :
Sur Windows :
keytool -exportcert -list -v \-alias androiddebugkey -keystore
%USERPROFILE%\.android\[Link]
Vous trouverez plus d'informations au sujet des certificats sur ce lien.
Cliquez sur le bouton "Enregistrer l'application" afin d'accéder à l'étape 2.
Année universitaire 2022/2023
Firebase vient de vous générer un fichier, [Link], qu'il faudra importer à
la racine du dossier app/ de votre projet Android. Ce dernier contiendra toutes les
informations de configuration relatives à votre projet Firebase. Une fois cette action
réalisée, appuyez sur le bouton "Continuer" afin d'accéder à l'étape 3.
Année universitaire 2022/2023
Pour terminer l'intégration de Firebase dans notre projet Android, nous allons modifier
les fichiers Gradle afin d'y installer les librairies utiles à Firebase :
Fichier [Link] au niveau du projet ([Link]):
buildscript {
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
}
dependencies {
// ...
// Add the following line:
classpath '[Link]:google-services:4.3.5' // Google Services plugin
}
}
allprojects {
// ...
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
// ...
}
}
Fichier [Link] au niveau de l'application (app/[Link]):
apply plugin: '[Link]'
// Add the following line:
apply plugin: '[Link]-services' // Google Services plugin
android {
// ...
}
Une fois cela effectué, n'oubliez pas de revenir à l'interface web de Firebase et cliquer
sur le bouton "Terminer".
À l'aide de Firebase Android BoM , déclarez les dépendances des produits Firebase que
vous souhaitez utiliser dans votre application. Déclarez-les dans le fichier Gradle
de votre module (au niveau de l'application) (généralement app/[Link] )
dependencies {
// ...
// Import the Firebase BoM
implementation platform('[Link]:firebase-bom:26.4.0')
Année universitaire 2022/2023
// When using the BoM, you don't specify versions in Firebase library dependencies
// Declare the dependency for the Firebase SDK for Google Analytics
implementation '[Link]:firebase-analytics'
// Declare the dependencies for any other desired Firebase products
// For example, declare the dependencies for Firebase Authentication and Cloud Firestore
implementation '[Link]:firebase-auth'
implementation '[Link]:firebase-firestore'
}
Synchronisez votre application pour vous assurer que toutes les dépendances ont les
versions nécessaires.
2. Créer une base de données
NB : Cette partie est entierement basé sur la documentation de goole Firebase : Installation
et configuration sur Android ([Link])
1. Accédez à la section Realtime Database de la console Firebase . Vous serez invité à
sélectionner un projet Firebase existant. Suivez le workflow de création de base de
données.
2. Sélectionnez un mode de démarrage pour vos règles de sécurité Firebase:
Mode d'essai
Idéal pour démarrer avec les bibliothèques clientes mobiles et Web, mais permet
à quiconque de lire et d'écraser vos données. Après le test, assurez-vous de
consulter la section Comprendre les règles de base de données Firebase
Realtime .
Remarque: si vous créez une base de données en mode Test et n'apportez aucune
modification aux règles par défaut lisibles et inscriptibles dans le monde entier pendant
une période d'essai, vous serez alerté par e-mail, puis les règles de votre base de données
rejetteront toutes les demandes. Notez la date d'expiration lors du processus de
configuration de la console Firebase.
Pour démarrer avec le SDK Web, iOS ou Android, sélectionnez le mode test.
Mode verrouillé
Refuse toutes les lectures et écritures des clients mobiles et Web. Vos serveurs
d'applications authentifiés peuvent toujours accéder à votre base de données.
3. Choisissez une région pour la base de données. Selon votre choix de région, l'espace de
noms de la base de données sera de la
forme <databaseName>.[Link] ou <databaseName>.<region>.[Link] .
Pour plus d'informations, voir sélectionner des emplacements pour votre projet .
4. Cliquez sur Terminé .
Année universitaire 2022/2023
Lorsque vous activez la base de données en temps réel, elle active également l'API
dans Cloud API Manager .
Ajoutez le SDK de base de données en temps réel à votre application
À l'aide de Firebase Android BoM , déclarez la dépendance de la bibliothèque Realtime Database
Android dans le fichier Gradle de votre module (au niveau de
l'application) (généralement app/[Link] ).
JavaKotlin + KTX
dependencies {
// Import the BoM for the Firebase platform
implementation platform('[Link]:firebase-bom:26.4.0')
// Declare the dependency for the Realtime Database library
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation '[Link]:firebase-database'
}
En utilisant Firebase Android BoM , votre application utilisera toujours des versions
compatibles des bibliothèques Firebase Android.
(Alternative) Déclarez les dépendances de la bibliothèque Firebase sans utiliser le BoM
Configurer les règles de base de données en temps réel
La base de données en temps réel fournit un langage de règles déclaratives qui vous
permet de définir comment vos données doivent être structurées, comment elles
doivent être indexées et quand vos données peuvent être lues et écrites.
Remarque: Par défaut, l'accès en lecture et en écriture à votre base de données est restreint afin
que seuls les utilisateurs authentifiés puissent lire ou écrire des données. Pour commencer sans
configurer l' authentification , vous pouvez configurer vos règles d'accès public . Cela rend votre
base de données ouverte à tout le monde, même aux personnes n'utilisant pas votre application,
alors assurez-vous de restreindre à nouveau votre base de données lorsque vous configurez
l'authentification.
Écrivez dans votre base de données
Récupérez une instance de votre base de données à l'aide de getInstance() et référencez
l'emplacement dans getInstance() vous souhaitez écrire.
Remarque: pour obtenir une référence à une base de données autre qu'une base de données par
défaut us-central1 , vous devez transmettre l'URL de la base de données à getInstance() (ou Kotlin
+ KTX database() ). Pour une base de données par défaut us-central1 , vous pouvez
appeler getInstance() (ou database ) sans arguments.
Vous pouvez trouver l'URL de votre base de données en temps réel dans la section Base de
données en temps réel de la console Firebase . Il aura la
Année universitaire 2022/2023
forme [Link] (pour les us-central1 données us-central1 )
ou [Link] (pour les bases de données dans tous les
autres emplacements).
JavaKotlin + KTX
// Write a message to the database
FirebaseDatabase database = [Link]();
DatabaseReference myRef = [Link]("message");
[Link]("Hello, World!");
[Link]
Vous pouvez enregistrer une gamme de types de données dans la base de données de
cette manière, y compris les objets Java. Lorsque vous enregistrez un objet, les réponses
de tous les getters seront enregistrées en tant qu'enfants de cet emplacement.
Lire à partir de votre base de données
Pour mettre à jour les données de votre application en temps réel, vous devez ajouter
un ValueEventListener à la référence que vous venez de créer.
La méthode onDataChange() de cette classe est déclenchée une fois lorsque l'écouteur est
attaché et à nouveau chaque fois que les données changent, y compris les enfants.
JavaKotlin + KTX
// Read from the database
[Link](new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
String value = [Link]([Link]);
Log.d(TAG, "Value is: " + value);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to read value.", [Link]());
}
});
[Link]