Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Modèles de configuration à distance et gestion des versions

Le modèle de configuration à distance est l'ensemble côté serveur de paramètres et de conditions au format JSON que vous avez créés pour votre projet Firebase. Vous pouvez modifier et gérer le modèle en utilisant la console Firebase, qui affiche le contenu du modèle sous forme graphique dans les paramètres et conditions onglets. Vous pouvez également utiliser l' API back - end Config à distance ou la CLI Firebase pour modifier et gérer votre config.

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 en tant que version que vous pouvez récupérer ou restaurer selon vos besoins. 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 comprennent une la version champ 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èles 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 : 90 jours à compter de la date de création, ou une limite totale de 300 versions stockées. Si vous souhaitez stocker ou revenir à un modèle en dehors de ces limites, enregistrez-le et stockez-le manuellement. Le modèle actif actuel Config à distance utilisé par votre application n'expire pas; cependant, s'il a été actif plus de 90 jours depuis sa création et est remplacé par une mise à jour, il ne peut plus être récupéré (en raison de son expiration).

Gérer les versions des modèles 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 façon de créer, modifier et enregistrer des modèles programatically, voir Modifier à distance Config 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 exemple:

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());
}

DU REPOS

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

Console Firebase

Dans le Paramètres onglet, sélectionnez l'icône « horloge » affiché en haut à droite. Cela ouvre l' historique des modifications page listant toutes les versions de modèle 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 proviennent de la console, de l'API REST, d'une annulation ou s'il s'agit de modifications incrémentielles provenant d'une sauvegarde forcée du modèle.

Interface de ligne de commande Firebase

firebase remoteconfig:versions:list

Utilisez la --limit option pour limiter le nombre de versions retourné. 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 exemple:

Node.js

Passe getTemplate() sans arguments 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());

DU 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</pre>

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

Console Firebase

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

Vous pouvez afficher une diff détaillée de la version sélectionnée et toute autre version stockée en plaçant le curseur sur le menu contextuel pour toute version non sélectionnée et en sélectionnant Comparer avec la version sélectionnée.

Interface de ligne de commande Firebase

firebase remoteconfig:get -v VERSION_NUMBER

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

Revenir à une version stockée spécifique du modèle Remote Config

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

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());
  }
}

DU REPOS

De revenir à un modèle de configuration à distance stockée, émettre un HTTP POST avec la méthode personnalisée :rollback et, dans le corps de la demande, la version spécifique à appliquer. Par exemple:

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

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 précédentes de modèles éligibles pour rollback, un bouton d'option de revenir à cette version est affichée en haut à droite de l' historique des modifications page. Cliquez et confirmer que si vous êtes sûr que vous souhaitez revenir à cette version et d' utiliser ces valeurs immédiatement pour toutes les applications et les utilisateurs.

Interface de ligne de commande 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, ne différant de l'original que par le fait que son numéro de version est 11. La version originale 6 est toujours stockée, en supposant qu'elle n'a pas atteint son expiration, et la version 11 devient le modèle actif.