Intégrer Remote Config à l'atelier de programmation Android

1. Introduction

Dernière mise à jour : 09/03/2021

Qu'est-ce que Firebase Remote Config ?

Firebase Remote Config est un service cloud qui vous permet de modifier le comportement et l'apparence de votre application sans demander aux utilisateurs d'en télécharger une mise à jour, et ce sans frais. Lorsque vous utilisez Remote Config, vous créez des valeurs par défaut dans l'application qui contrôlent son comportement et son apparence. Vous pouvez ensuite utiliser la console Firebase ou les API backend Remote Config afin de remplacer ces valeurs par défaut pour tous les utilisateurs de l'application ou pour certains segments de la base d'utilisateurs. Votre application contrôle le moment où les mises à jour sont appliquées. Elle peut rechercher fréquemment les mises à jour et les appliquer avec un impact négligeable sur les performances.

Comment ça marche ?

Remote Config inclut une bibliothèque cliente qui gère des tâches importantes, comme l'extraction et la mise en cache des valeurs de paramètre. Vous pouvez toujours contrôler le moment où les nouvelles valeurs sont activées afin qu'elles affectent l'expérience utilisateur de votre application. Vous pouvez ainsi protéger l'expérience de votre application en contrôlant le calendrier des modifications.

Les méthodes de la bibliothèque cliente Remote Config get fournissent un point d'accès unique pour les valeurs de paramètres. Votre application obtient les valeurs côté serveur en utilisant la même logique que celle utilisée pour obtenir les valeurs par défaut intégrées. Vous pouvez donc ajouter les fonctionnalités de Remote Config à votre application sans écrire beaucoup de code.

Pour remplacer les valeurs par défaut dans l'application, vous utilisez la console Firebase ou les API backend Remote Config afin de créer des paramètres portant les mêmes noms que ceux utilisés dans votre application. Pour chaque paramètre, vous pouvez définir une valeur par défaut côté serveur afin de remplacer la valeur par défaut dans l'application. Vous pouvez également créer des valeurs conditionnelles afin de remplacer la valeur par défaut dans l'application pour les instances d'application qui remplissent certaines conditions. Ce graphique montre comment les valeurs de paramètres sont hiérarchisées dans le backend Remote Config et dans votre application :

61f12f33d2ac3133.png

Points abordés

  • Implémenter Firebase Remote Config
  • Utiliser Firebase Remote Config pour modifier des valeurs sans mettre à jour votre application

Prérequis

  • La dernière version d'Android Studio
  • Un compte Firebase
  • (recommandé, mais facultatif) Un appareil Android physique pour exécuter votre application
  • Connaissances de base de Java ou Kotlin

2. Configuration

(Facultatif) Télécharger l'exemple de code

Dans cet atelier de programmation, vous allez créer votre propre application de test. Toutefois, si vous souhaitez voir et exécuter l'application exemple existante, vous pouvez télécharger l'exemple de code de démarrage rapide.

Cliquez sur le bouton suivant pour télécharger l'ensemble du code de cet atelier de programmation :

Décompressez le fichier ZIP téléchargé. Cette action décompresse le dossier racine, nommé quickstart-android-master.

Vous pouvez également cloner le dépôt GitHub à partir de la ligne de commande.

$ git clone https://github.com/firebase/quickstart-android.git

Le dépôt contient plusieurs dossiers. Nous allons utiliser le dossier de configuration android_studio_folder.png.

(Facultatif) Importer l'exemple de code

Lancez Android Studio, puis sélectionnez Import project (Importer un projet) sur l'écran d'accueil. Ouvrez ensuite le dossier téléchargé et sélectionnez le dossier android_studio_folder.png config. Cliquez ensuite sur "Ouvrir".

5f90353b0b519642.png

Créer un projet Android

  1. Dans Android Studio, démarrez un nouveau projet.
  2. Sélectionner "Activité simple"
  3. Sur l'écran "Configure Your Project" (Configurer votre projet) :
  4. Attribuez un nom à votre projet. Le nom du package et l'emplacement d'enregistrement sont générés automatiquement.
  5. Langage : Java
  6. SDK minimal 16

3. Ajouter Firebase et Firebase Analytics à votre projet Android

Créer un projet Firebase

Avant de pouvoir ajouter Firebase à votre application Android, vous devez créer un projet Firebase à associer à votre application iOS. Consultez Comprendre les projets Firebase pour en savoir plus sur les projets Firebase.

  1. Dans la console Firebase, cliquez sur Ajouter un projet, puis sélectionnez ou saisissez un nom de projet. 910158221fe46223.png

Si vous disposez d'un projet Google Cloud Platform (GCP) existant, vous pouvez le sélectionner dans le menu déroulant pour ajouter des ressources Firebase à ce projet.

  1. (Facultatif) Si vous créez un projet, vous pouvez modifier son ID.

Firebase attribue automatiquement un ID unique à votre projet Firebase. Consultez "Comprendre les projets Firebase" pour découvrir comment Firebase utilise l'ID de projet.

  1. Cliquez sur Continuer.
  2. Configurez Google Analytics pour votre projet. Vous pourrez ainsi profiter d'une expérience optimale avec les produits Firebase suivants :
  • Firebase Crashlytics
  • Firebase Predictions
  • Firebase Cloud Messaging
  • Firebase In-App Messaging
  • Firebase Remote Config
  • Firebase A/B Testing

Lorsque vous y êtes invité, sélectionnez un compte Google Analytics existant ou créez-en un. Si vous choisissez de créer un compte, sélectionnez l'emplacement de vos rapports Analytics, puis acceptez les paramètres de partage de données et les conditions d'utilisation de Google Analytics pour votre projet.

1282a798556779ab.png48ade68c8de27d2.png

  1. Cliquez sur Créer un projet (ou sur Ajouter Firebase si vous utilisez un projet GCP existant).

Firebase provisionne automatiquement des ressources pour votre projet Firebase. Une fois le processus terminé, vous êtes redirigé vers la page de présentation de votre projet Firebase dans la console Firebase.

Enregistrer votre application auprès de Firebase

Une fois que vous avez créé un projet Firebase, vous pouvez y ajouter votre application Android.

Consultez Comprendre les projets Firebase pour en savoir plus sur les bonnes pratiques et les points à prendre en compte lorsque vous ajoutez des applications à un projet Firebase, y compris comment gérer plusieurs variantes de compilation.

  1. Accédez à la console Firebase.
  2. En haut de la page "Vue d'ensemble du projet", cliquez sur l'icône Android pour lancer le workflow de configuration. Si vous avez déjà ajouté une application à votre projet Firebase, cliquez sur "Ajouter une application" pour afficher les options de plate-forme.
  3. Saisissez le nom du package de votre application dans le champ Nom du package Android.
  4. (Facultatif) Saisissez le pseudo de l'application.
  5. Laissez le champ SHA-1 vide, car il n'est pas obligatoire pour ce projet.
  6. Cliquez sur Enregistrer l'application.

Ajouter le fichier de configuration Firebase

Vous serez ensuite invité à télécharger un fichier de configuration contenant toutes les métadonnées Firebase nécessaires pour votre application. Cliquez sur Télécharger google-services.json pour obtenir votre fichier de configuration Firebase pour Android (google-services.json).

bc8ec7d3c9a28d75.pnga99b7415462dfc8b.png

Dans votre fichier Gradle au niveau du projet (build.gradle), ajoutez des règles pour inclure le plug-in Gradle des services Google. Vérifiez également que vous disposez du dépôt Maven de Google.

build.gradle au niveau du projet (<project>/build.gradle) :

buildscript {

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }

  dependencies {
    // ...

    // Add the following line:
    classpath 'com.google.gms: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
    // ...
  }
}

Dans le fichier Gradle de votre module (au niveau de l'application) (généralement app/build.gradle), appliquez le plug-in Gradle des services Google :

build.gradle au niveau de l'application (<project>/<app-module>/build.gradle) :

apply plugin: 'com.android.application'

// Add the following line:

apply plugin: ‘com.google.gms.google-services' // Google Services plugin

android {

// ...

}

Ajouter le SDK Firebase à votre application Android

Pour Remote Config, Google Analytics est requis pour le ciblage conditionnel de propriétés utilisateur et d'audiences avec des instances d'application. Assurez-vous d'activer Google Analytics dans votre projet.

(Cette opération est déjà effectuée dans l'exemple de code de démarrage rapide.)

À l'aide de la BoM Android Firebase, déclarez la dépendance pour la bibliothèque Remote Config pour Android dans le fichier Gradle de votre module au niveau de l'application (généralement app/build.gradle). Avec la BoM Android Firebase, votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.

De plus, lors de la configuration d'Analytics, vous devez ajouter le SDK Firebase pour Google Analytics à votre application. Sous "Dépendances", ajoutez le code suivant :

app/build.gradle

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:26.6.0')

    // Declare the dependencies for the Remote Config and Analytics libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-config'
    implementation 'com.google.firebase:firebase-analytics'
}

Synchroniser votre projet avec les fichiers Gradle

Pour vous assurer que toutes les dépendances sont disponibles pour votre application, synchronisez votre projet avec les fichiers Gradle en sélectionnant File > Sync Project with Gradle Files (Fichier > Synchroniser le projet avec les fichiers Gradle).

4. Examiner les principaux composants de Remote Config

Nous allons maintenant examiner les étapes à suivre pour utiliser Remote Config dans une application. Ces étapes ont déjà été effectuées dans le code de l'atelier de programmation de démarrage rapide. Veuillez utiliser cette section lorsque vous examinez le code de l'atelier de programmation de démarrage rapide pour comprendre ce qui se passe.

1. Obtenir l'objet Singleton Remote Config

Extrayez une instance d'objet Remote Config et définissez l'intervalle minimal d'extraction pour effectuer régulièrement des actualisations :

MainActivity.java

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

L'objet singleton est utilisé pour stocker les valeurs de paramètre par défaut de l'application, récupérer les valeurs de paramètre mises à jour à partir du backend et contrôler le moment où les valeurs récupérées sont mises à la disposition de votre application.

Pendant le développement, il est recommandé de définir un intervalle de récupération minimal relativement faible. Pour en savoir plus, consultez Limitation du débit.

2. Définir les valeurs de paramètre par défaut dans l'application

Vous pouvez définir des valeurs de paramètre par défaut dans l'objet Remote Config afin que votre application se comporte comme prévu avant de se connecter au backend Remote Config et que des valeurs par défaut soient disponibles si aucune n'est définie dans le backend.

Vous pouvez définir un ensemble de noms de paramètres et de valeurs de paramètres par défaut à l'aide d'un objet Map ou d'un fichier de ressources XML stocké dans le dossier res/xml de votre application. L'application exemple de démarrage rapide Remote Config utilise un fichier XML pour définir les noms et les valeurs des paramètres par défaut. Voici comment créer votre propre fichier XML :

  1. Créez un dossier xml sous le dossier res.

4b8a2a637a626e94.png

  1. Effectuez un clic droit sur le dossier xml que vous venez de créer, puis créez un fichier.

358b4ba740120ece.png

  1. Définissez les valeurs par défaut. Dans la section suivante, vous allez essayer de modifier les valeurs par défaut dans le fichier XML du démarrage rapide de Remote Config.
  2. Ajoutez ces valeurs à l'objet Remote Config à l'aide de setDefaultsAsync(int), comme indiqué :

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

3. Obtenir les valeurs de paramètre à utiliser dans votre application

Vous pouvez désormais obtenir les valeurs des paramètres à partir de l'objet Remote Config. Si vous définissez des valeurs dans le backend, que vous les récupérez et que vous les activez, ces valeurs sont disponibles pour votre application. Sinon, vous obtenez les valeurs de paramètre dans l'application configurées à l'aide de setDefaultsAsync(int). Pour obtenir ces valeurs, appelez la méthode listée ci-dessous qui correspond au type de données attendu par votre application, en fournissant la clé de paramètre comme argument :

4. Extraire et activer les valeurs

  1. Pour extraire les valeurs de paramètre du backend Remote Config, appelez la méthode fetch(). Toutes les valeurs que vous définissez dans le backend sont récupérées et stockées dans l'objet Remote Config.
  2. Pour rendre les valeurs de paramètre récupérées disponibles pour votre application, appelez la méthode activate(). Si vous souhaitez extraire et activer des valeurs en un seul appel, vous pouvez utiliser une requête fetchAndActivate() pour extraire des valeurs du backend Remote Config et les rendre disponibles pour l'application :

MainActivity.java

mFirebaseRemoteConfig.fetchAndActivate()
        .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    boolean updated = task.getResult();
                    Log.d(TAG, "Config params updated: " + updated);
                    Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                            Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(MainActivity.this, "Fetch failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

Étant donné que ces valeurs de paramètres mises à jour affectent le comportement et l'apparence de votre application, vous devez activer les valeurs récupérées à un moment qui garantit une expérience fluide pour votre utilisateur, par exemple la prochaine fois qu'il ouvrira votre application. Pour en savoir plus et obtenir des exemples, consultez Stratégies de chargement de Remote Config.

Limitation

Si une application récupère trop de fois des données sur une courte période, les appels de récupération sont limités et le SDK renvoie FirebaseRemoteConfigFetchThrottledException. Avant la version 17.0.0 du SDK, la limite était de cinq requêtes de récupération dans une fenêtre de 60 minutes (les versions plus récentes ont des limites plus permissives).

Lors du développement d'une application, vous pouvez être amené à récupérer et à activer des configurations très fréquemment (plusieurs fois par heure) pour itérer rapidement à mesure que vous développez et testez votre application. Pour permettre une itération rapide sur un projet comptant jusqu'à 10 développeurs, vous pouvez définir temporairement un objet FirebaseRemoteConfigSettings avec un intervalle de récupération minimal faible (setMinimumFetchIntervalInSeconds) dans votre application.

L'intervalle de récupération minimal par défaut pour Remote Config est de 12 heures. Cela signifie que les configurations ne seront pas récupérées à partir du backend plus d'une fois dans une période de 12 heures, quel que soit le nombre d'appels de récupération réellement effectués. Plus précisément, l'intervalle de récupération minimal est déterminé dans l'ordre suivant :

  1. Paramètre dans fetch(long)
  2. Paramètre dans FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. La valeur par défaut de 12 heures

Pour définir l'intervalle d'extraction minimal sur une valeur personnalisée, utilisez FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long).

5. Modifier le comportement de l'application avec Remote Config

Modifier les paramètres par défaut dans l'application

Ouvrez res/xml/remote_config_defaults.xml et remplacez les valeurs par défaut par d'autres valeurs.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
    <entry>
        <key>loading_phrase</key>
        <value>Fetching config...</value>
    </entry>
    <entry>
        <key>welcome_message_caps</key>
        <value>false</value>
    </entry>
    <entry>
        <key>welcome_message</key>
        <value>Welcome to my awesome app!</value>
    </entry>
</defaultsMap>
    <!-- END xml_defaults -->

Vérifier la modification de la valeur par défaut dans l'application

  1. Exécutez le projet dans un émulateur ou à l'aide d'un appareil de test pour confirmer le comportement.
  2. Cliquez sur "Ouvrir" pour la version Java ou Kotlin.

c1582b989c25ced.png

  1. Consultez le message de bienvenue dans la vue principale.

4c838bf5a629d5b8.png

Définir les valeurs de paramètre dans le backend Remote Config

Testons maintenant l'envoi de valeurs via Remote Config. À l'aide de la console Firebase ou des API backend Remote Config, vous pouvez créer des valeurs par défaut côté serveur qui remplacent les valeurs dans l'application en fonction de la logique conditionnelle ou du ciblage des utilisateurs souhaités. Cette section décrit les étapes à suivre dans la console Firebase pour créer ces valeurs.

  1. Ouvrez la console Firebase, puis votre projet.
  2. Sélectionnez Remote Config dans le menu latéral de la section "Engage" pour afficher le tableau de bord Remote Config.
  3. Sous Ajouter un paramètre, saisissez Parameter key.. Sous Default value, ajoutez le texte de votre choix. Cliquez ensuite sur "Ajouter un paramètre". Pour cet atelier de programmation, nous utiliserons les clés de paramètre du fichier res/xml/remote_config_defaults.xml. Pour en savoir plus, consultez le tableau ci-dessous :

Clé du paramètre

Valeur par défaut (remote_config_defaults.xml)

Description

loading_phrase

Récupération de la configuration…

Chaîne affichée lors de la récupération des valeurs Remote Config.

welcome_message_caps

faux

Booléen ; si la valeur est "true", le message de bienvenue est mis en majuscules.

welcome_message

Bienvenue dans mon application géniale !

String ; message de bienvenue

Exemple de capture d'écran :

28fa48f18da43002.png

  1. Lorsque vous avez terminé d'ajouter des paramètres, cliquez sur "Publier les modifications".
  2. Exécutez à nouveau votre application sur un émulateur ou un appareil, puis cliquez sur le bouton "Fetch Remote Welcome" (Récupérer l'accueil à distance) cette fois-ci.

cfe900477549adb7.png

  1. Le message d'accueil doit être mis à jour en fonction de votre paramètre et de vos valeurs Remote Config.

6. Félicitations

Félicitations, vous avez réussi à modifier le message de bienvenue à l'aide de Remote Config ! Il existe de nombreuses autres façons d'utiliser Remote Config pour modifier et personnaliser les applications. Veuillez consulter les ressources supplémentaires ci-dessous :