Check out what’s new from Firebase at Google I/O 2022. Learn more

Modèles de configuration à distance et gestion des versions

Le modèle Remote Config est l'ensemble côté serveur de paramètres et de conditions au format JSON que vous avez créé pour votre projet Firebase. Vous pouvez modifier et gérer le modèle à l'aide de la console Firebase, qui affiche le contenu du modèle sous forme graphique dans les onglets Paramètres et Conditions . Vous pouvez également utiliser les API backend de Remote Config ou l' interface de ligne de commande Firebase pour modifier et gérer votre configuration.

Voici un exemple de fichier modèle :

  {
    "conditions": [
      {
        "name": "ios",
        "expression": "device.os == 'ios'"
      }
    ],
    "parameters": {
      "welcome_message": {
        "defaultValue": {
          "value": "Welcome to this sample app"
        },
        "conditionalValues": {
          "ios": {
            "value": "Welcome to this sample iOS app"
          }
        }
      },
      "welcome_message_caps": {
        "defaultValue": {
          "value": "false"
        }
      },
      "header_text": {
        "defaultValue": {
          "useInAppDefault": true
        }
      }
    },
    "version": {
      "versionNumber": "28",
      "updateTime": "2020-05-14T18:39:38.994Z",
      "updateUser": {
        "email": "user@google.com"
      },
      "updateOrigin": "CONSOLE",
      "updateType": "INCREMENTAL_UPDATE"
    }
  }

Chaque fois que vous mettez à jour les paramètres, Remote Config crée un nouveau modèle Remote Config versionné et stocke le modèle précédent sous la forme d'une version que vous pouvez récupérer ou restaurer si nécessaire. Les numéros de version sont incrémentés séquentiellement à partir de la valeur initiale stockée par Remote Config. Tous les modèles incluent un champ de version comme indiqué, contenant des métadonnées sur cette version spécifique.

Avec la console Firebase, la CLI Firebase ou les API backend Remote Config, vous pouvez effectuer ces tâches de gestion des versions :

  • Répertorier toutes les versions de modèle stockées
  • Récupérer une version spécifique
  • Revenir à une version spécifique

Lorsque vous gérez des modèles de configuration à distance, gardez à l'esprit le seuil d'expiration : le modèle de configuration à distance actif actuellement utilisé par votre application n'expire pas ; cependant, si elle est remplacée par une mise à jour, la version précédente ne sera stockée que pendant 90 jours, après quoi elle expirera et ne pourra pas être récupérée. Il existe également une limite totale de 300 versions stockées. Si vous souhaitez stocker ou restaurer un modèle en dehors de ces limites, enregistrez-le et stockez-le manuellement.

Gérer les versions du modèle de configuration à distance

Cette section décrit comment gérer les versions de votre modèle Remote Config. Pour plus de détails sur la création, la modification et l'enregistrement de modèles par programme, consultez Modifier la configuration à distance par programme .

Répertorier toutes les versions stockées du modèle de configuration à distance

Vous pouvez récupérer une liste de toutes les versions stockées du modèle Remote Config. Par example:

Node.js

function listAllVersions() {
  admin.remoteConfig().listVersions()
    .then((listVersionsResult) => {
      console.log("Successfully fetched the list of versions");
      listVersionsResult.versions.forEach((version) => {
        console.log('version', JSON.stringify(version));
      });
    })
    .catch((error) => {
      console.log(error);
    });
}

Java

ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
while (page != null) {
  for (Version version : page.getValues()) {
    System.out.println("Version: " + version.getVersionNumber());
  }
  page = page.getNextPage();
}

// Iterate through all versions. This will still retrieve versions in batches.
page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
for (Version version : page.iterateAll()) {
  System.out.println("Version: " + version.getVersionNumber());
}

LE REPOS

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:listVersions

Console Firebase

Dans l'onglet Paramètres , sélectionner l'icône "horloge" affichée en haut à droite. Cela ouvre la page Historique des modifications répertoriant toutes les versions de modèles stockées dans un menu de liste à droite.

Les détails affichés pour chaque version stockée incluent des informations indiquant si les modifications provenaient de la console, de l'API REST, d'une restauration ou s'il s'agissait de modifications incrémentielles d'un enregistrement forcé du modèle.

CLI Firebase

firebase remoteconfig:versions:list

Utilisez l'option --limit pour limiter le nombre de versions renvoyées. Passez '0' pour récupérer toutes les versions.

La liste des modèles comprend des métadonnées pour toutes les versions stockées, y compris l'heure de la mise à jour, l'utilisateur qui l'a effectuée et si elle a été effectuée via la console ou l'API REST. Voici un exemple d'élément de version :

{
  "versions": [{
    "version_number": "6",
    "update_time": "2018-05-12T02:38:54Z",
    "update_user": {
      "email": "jane@developer.org",
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

Récupérer une version spécifique du modèle Remote Config

Vous pouvez récupérer n'importe quelle version stockée spécifique du modèle Remote Config. Par example:

Node.js

Passez getTemplate() sans aucun argument pour récupérer la dernière version du modèle, ou pour récupérer une version spécifique, utilisez getTemplateAtVersion() .

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
  .then((template) => {
    console.log("Successfully fetched the template with ETag: " + template.etag);
  })
  .catch((error) => {
    console.log(error);
  });

Java

Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get();
// See the ETag of the fetched template.
System.out.println("Successfully fetched the template with ETag: " + template.getETag());

LE REPOS

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig?version_number=6

Le paramètre d'URL ?version_number n'est valide que pour les opérations GET ; vous ne pouvez pas l'utiliser pour spécifier les numéros de version des mises à jour. Une requête get similaire sans le paramètre ?version_number récupèrerait le modèle actif actuel.

Console Firebase

Par défaut, le volet de détails de l'onglet Historique des modifications affiche le modèle actuellement actif. Pour afficher les détails d'une autre version de la liste, sélectionnez-la dans le menu de droite.

Vous pouvez afficher une comparaison détaillée de la version actuellement sélectionnée et de toute autre version stockée en survolant le menu contextuel de toute version non sélectionnée et en sélectionnant Comparer avec la version sélectionnée.

CLI Firebase

firebase remoteconfig:get -v VERSION_NUMBER

En option, vous pouvez écrire la sortie dans un fichier spécifié avec -o, FILENAME .

Revenir à une version stockée spécifique du modèle de configuration à distance

Vous pouvez revenir à n'importe quelle version stockée du modèle. Par example:

Node.js

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

Java

try {
  Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get();
  System.out.println("Successfully rolled back to template version: " + versionNumber);
  System.out.println("New ETag: " + template.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Error trying to rollback template.");
    System.out.println(rcError.getMessage());
  }
}

LE REPOS

Pour revenir à un modèle de configuration à distance stocké, émettez un POST HTTP avec la méthode personnalisée :rollback et, dans le corps de la requête, la version spécifique à appliquer. Par example:

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'

La réponse contient le contenu du modèle stocké désormais actif, avec ses nouvelles métadonnées de version.

Console Firebase

Pour les versions de modèle précédentes éligibles pour la restauration, un bouton d'option permettant de revenir à cette version s'affiche en haut à droite de la page Historique des modifications . Cliquez et confirmez ceci uniquement si vous êtes sûr de vouloir revenir à cette version et d'utiliser ces valeurs immédiatement pour toutes les applications et tous les utilisateurs.

CLI Firebase

firebase remoteconfig:rollback -v VERSION_NUMBER

Notez que cette opération de restauration crée effectivement une nouvelle version numérotée. Par exemple, le retour de la version 10 à la version 6 crée effectivement une nouvelle copie de la version 6, qui ne diffère de l'original que par le fait que son numéro de version est 11. La version 6 d'origine est toujours stockée, en supposant qu'elle n'a pas atteint son expiration, et la version 11 devient le modèle actif.

Télécharger les valeurs par défaut du modèle de configuration à distance

Étant donné que votre application n'est pas toujours connectée à Internet, vous devez configurer les valeurs par défaut de l'application côté client pour tous les paramètres de configuration à distance. Vous devez également synchroniser périodiquement les valeurs par défaut de votre client d'application et les valeurs des paramètres par défaut du backend de Remote Config, car elles peuvent changer au fil du temps.

Comme décrit dans les liens spécifiques à la plate-forme à la fin de cette section, vous pouvez définir manuellement ces valeurs par défaut dans votre application ou vous pouvez rationaliser ce processus en téléchargeant des fichiers contenant uniquement les paires clé-valeur pour tous les paramètres et leurs valeurs par défaut dans le modèle de configuration à distance actif. Vous pouvez ensuite inclure ce fichier dans votre projet et configurer votre application pour importer ces valeurs.

Vous pouvez télécharger ces fichiers au format XML pour les applications Android, au format de liste de propriétés (plist) pour les applications iOS et au format JSON pour les applications Web.

Nous vous recommandons de télécharger périodiquement les valeurs par défaut de Remote Config avant toute nouvelle version d'application pour vous assurer que votre application et le backend de Remote Config restent synchronisés.

Pour télécharger un fichier contenant les valeurs par défaut du modèle :

LE REPOS

curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'

Utilisez XML , PLIST ou JSON comme valeur de format , selon le format de fichier que vous souhaitez télécharger.

Console Firebase

  1. Dans l'onglet Paramètres , ouvrez le menu et sélectionnez Télécharger les valeurs par défaut .
  2. Lorsque vous y êtes invité, cliquez sur le bouton radio correspondant au format de fichier que vous souhaitez télécharger, puis cliquez sur Télécharger le fichier .

Pour plus d'informations sur l'importation des valeurs par défaut de Remote Config dans votre application, consultez :