Remote Config modèles sont des ensembles de paramètres et de conditions au format JSON que vous avez créés pour votre projet Firebase. Vous pouvez créer des modèles clients, à partir desquels votre application récupère des valeurs, et des modèles serveurs, à partir desquels les clients serveurs peuvent récupérer des valeurs.
Cette section traite des modèles de client. Pour en savoir plus sur les modèles spécifiques aux serveurs, cliquez sur Modèles de serveur.Vous modifiez et gérez le modèle à l'aide de la Firebase console, qui affiche le contenu du modèle au format graphique dans les Onglets Paramètres et Conditions.
Vous pouvez également utiliser l' API Remote Config REST et le SDK Admin ou la Firebase CLI pour modifier et gérer votre modèle de client.
Voici un exemple de fichier de modèle de serveur :
{
"parameters": {
"preamble_prompt": {
"defaultValue": {
"value": "You are a helpful assistant who knows everything there is to know about Firebase! "
},
"description": "Add this prompt to the user's prompt",
"valueType": "STRING"
},
"model_name": {
"defaultValue": {
"value": "gemini-pro-test"
},
"valueType": "STRING"
},
"generation_config": {
"defaultValue": {
"value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
},
"valueType": "JSON"
},
},
"version": {
"versionNumber": "19",
"isLegacy": true
}
}
Vous pouvez effectuer les tâches de gestion des versions suivantes avec la Firebase console :
- Répertorier toutes les versions de modèle stockées
- Récupérer une version spécifique
- Effectuer un rollback vers une version client spécifique
- Supprimer des modèles Remote Config de la page Historique des modifications
Le nombre total de versions stockées à vie par type de modèle est limité à 300 (300 modèles de client et 300 modèles de serveur), y compris les numéros de version stockés pour les modèles supprimés. Si vous publiez plus de 300 versions de modèle par type de modèle au cours de la durée de vie d'un projet, les versions les plus anciennes sont supprimées, ce qui permet de conserver un maximum de 300 versions de ce type.
Chaque fois que vous mettez à jour des 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 vers laquelle vous pouvez effectuer un rollback si nécessaire. Les numéros de version
sont incrémentés de manière séquentielle à partir de la valeur initiale stockée par Remote Config.
Tous les modèles incluent un champ version, comme illustré, contenant des métadonnées sur cette version spécifique.
Vous pouvez supprimer des modèles Remote Config selon vos besoins depuis la Historique des modifications de la console Remote Config.
Gérer les versions de modèle Remote Config
Cette section explique comment gérer les versions de votre Remote Config modèle.
Répertorier toutes les versions stockées du modèle Remote Config
Vous pouvez récupérer une liste de toutes les versions stockées du Remote Config modèle. Pour ce faire :
Firebase console
Dans l'onglet Paramètres, sélectionnez l'icône d'horloge affichée en haut à droite. La page Historique des modifications s'ouvre et répertorie 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'un rollback ou s'il s'agit de modifications incrémentales provenant 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.
Transmettez "0" pour récupérer toutes les versions.
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()); }
REST
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
La liste des modèles inclut 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 la manière dont elle a été effectuée. Voici un exemple d'élément de version :
```json
{
"versions": [{
"version_number": "6",
"update_time": "2022-05-12T02:38:54Z",
"update_user": {
"name": "Jane Smith",
"email": "jane@developer.org",
"imageUrl": "https://lh3.googleusercontent.com/a-/..."
},
"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. Pour récupérer une version de modèle stockée :
Firebase console
Par défaut, le volet de détails de l' onglet "Historique des modifications" affiche le modèle 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 pointant sur le menu contextuel d'une version non sélectionnée et en sélectionnant Comparer avec la version sélectionnée.
CLI Firebase
firebase remoteconfig:get -v VERSION_NUMBER
Vous pouvez également écrire la sortie dans un fichier spécifié avec -o, FILENAME.
Node.js
Transmettez getTemplate() sans aucun argument pour récupérer la dernière version du modèle, ou utilisez getTemplateAtVersion() pour récupérer une version spécifique.
// 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());
REST
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 des numéros de version pour les mises à jour. Une requête get similaire sans le paramètre ?version_number permettrait de récupérer le modèle actif.
Effectuer un rollback vers une version stockée spécifique du modèle Remote Config
Vous pouvez effectuer un rollback vers n'importe quelle version stockée du modèle. Pour effectuer un rollback d'un modèle :
Firebase console
Pour les versions de modèle précédentes éligibles au rollback, un bouton d'option permettant d'effectuer un rollback vers cette version s'affiche en haut à droite de la page "Historique des modifications". Cliquez dessus et confirmez uniquement si vous êtes sûr de vouloir effectuer un rollback vers cette version et utiliser ces valeurs immédiatement pour toutes les applications et tous les utilisateurs.
CLI Firebase
firebase remoteconfig:rollback -v VERSION_NUMBER
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()); } }
REST
Pour effectuer un rollback vers un modèle Remote Config stocké, envoyez une requête HTTP POST avec
la méthode personnalisée :rollback et, dans le corps de la requête, la version spécifique
à appliquer. Exemple :
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.
Notez que cette opération de rollback crée une version numérotée. Par exemple, le rollback de la version 10 vers la version 6 crée une copie de la version 6, qui ne diffère de l'original que par son numéro de version, qui est 11. La version 6 d'origine est toujours stockée, à condition qu'elle n'ait pas expiré, et la version 11 devient le modèle actif.
Supprimer un modèle Remote Config
Vous pouvez supprimer des modèles Remote Config depuis la console Firebase. Pour supprimer un Remote Config modèle :
1. Sur la page "Remote Config Paramètres ", cliquez sur Historique des modifications.Basculez vers le modèle que vous souhaitez supprimer, cliquez sur Plus, puis sélectionnez Supprimer.
Lorsque vous êtes invité à confirmer la suppression, cliquez sur Supprimer.
Télécharger et publier des modèles Remote Config
Téléchargez et publiez des modèles Remote Config pour les intégrer à vos systèmes de contrôle des sources et de compilation, automatiser les mises à jour de configuration et synchroniser les paramètres et les valeurs sur plusieurs projets.
Vous pouvez télécharger le modèle Remote Config actuellement actif depuis la console Firebase. Vous pouvez ensuite mettre à jour le fichier JSON exporté et le publier dans le même projet, ou le publier dans un projet nouveau ou existant.
Supposons que vous ayez plusieurs projets représentant différentes étapes de votre cycle de vie de développement logiciel, comme les environnements de développement, de test, de préproduction et de production. Dans ce cas, vous pouvez promouvoir un modèle entièrement testé de votre environnement de préproduction vers votre environnement de production en le téléchargeant depuis votre projet de préproduction et en le publiant dans votre projet de production.
Vous pouvez également utiliser cette méthode pour migrer des configurations d'un projet vers un autre ou pour remplir un nouveau projet avec des paramètres et des valeurs provenant d'un projet établi.
Les paramètres et les valeurs de paramètre créés spécifiquement en tant que variantes dans une A/B Testing expérience ne sont pas inclus dans les modèles exportés.
Pour exporter et importer des modèles Remote Config :
- Téléchargez le modèle Remote Config Config actuel.
- Validez le modèle Remote Config.
- Publiez le modèle Remote Config.
Télécharger le modèle Remote Config actuel
Utilisez les éléments suivants pour télécharger le modèle Remote Config actif au format JSON :
Firebase console
- Dans l'onglet " Remote Config Paramètres" ou "Conditions ", ouvrez le Menu, puis sélectionnez "Télécharger le fichier de configuration actuel".
- Lorsque vous y êtes invité, cliquez sur Télécharger le fichier de configuration, choisissez l'emplacement où vous souhaitez enregistrer le fichier, puis cliquez sur Enregistrer.
CLI Firebase
firebase remoteconfig:get -o filename
Node.js
function getTemplate() { var config = admin.remoteConfig(); config.getTemplate() .then(function (template) { console.log('ETag from server: ' + template.etag); var templateStr = JSON.stringify(template); fs.writeFileSync('config.json', templateStr); }) .catch(function (err) { console.error('Unable to get template'); console.error(err); }); }
Java
Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get(); // See the ETag of the fetched template. System.out.println("ETag from server: " + template.getETag());
REST
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename
Cette commande génère la charge utile JSON dans un fichier et les en-têtes (y compris l'ETag) dans un fichier headers distinct.
Valider le modèle Remote Config
Vous pouvez valider les mises à jour de votre modèle avant de les publier à l'aide du Firebase Admin SDK ou de l'API REST. Les modèles sont également validés lorsque vous tentez de publier depuis la Firebase CLI ou la Firebase console.Le processus de validation du modèle recherche les erreurs telles que les clés dupliquées pour les paramètres et les conditions, les noms de conditions non valides ou les conditions inexistantes, ou les ETag mal formatés. Par exemple, une requête contenant plus que le nombre autorisé
de clés (2 000) renverrait le message d'erreur Param count too
large.
Node.js
function validateTemplate(template) { admin.remoteConfig().validateTemplate(template) .then(function (validatedTemplate) { // The template is valid and safe to use. console.log('Template was valid and safe to use'); }) .catch(function (err) { console.error('Template is invalid and cannot be published'); console.error(err); }); }
Java
try { Template validatedTemplate = FirebaseRemoteConfig.getInstance() .validateTemplateAsync(template).get(); System.out.println("Template was valid and safe to use"); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Template is invalid and cannot be published"); System.out.println(rcError.getMessage()); } }
REST
Validez les mises à jour du modèle en ajoutant le paramètre d'URL ?validate_only=true
à votre requête de publication :
curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?validate_only=true -d @filename
Si votre modèle a été validé, la commande curl renvoie le
modèle JSON que vous avez envoyé et, dans le fichier headers enregistré, vous trouverez
un état HTTP/2 200 et un ETag mis à jour avec le suffixe -0. Si votre
modèle n'a pas été validé, vous recevrez l'erreur de validation dans la
réponse JSON et votre headers fichier contiendra une réponse autre que 200
(et aucun ETag).
Publier le modèle Remote Config
Après avoir téléchargé un modèle, apporté les modifications nécessaires au contenu JSON et l'avoir validé, vous pouvez le publier dans un projet.
La publication d'un modèle remplace l'ensemble du modèle de configuration existant par le fichier mis à jour et incrémente la version du modèle de un. Étant donné que l'ensemble de la configuration est remplacé, si vous supprimez un paramètre du fichier JSON et que vous le publiez, le paramètre est supprimé du serveur et n'est plus disponible pour les clients.
Après la publication, les modifications apportées aux paramètres et aux valeurs sont immédiatement disponibles pour vos applications et vos utilisateurs. Si nécessaire, vous pouvez effectuer un rollback vers une version précédente.
Utilisez les commandes suivantes pour publier votre modèle :
Firebase console
- Dans l'onglet " Remote Config Paramètres" ou "Conditions ", ouvrez le Menu, puis sélectionnez "Publier à partir d'un fichier".
- Lorsque vous y êtes invité, cliquez sur Parcourir, accédez au fichier Remote Config que vous souhaitez publier et sélectionnez-le, puis cliquez sur Sélectionner.
- Le fichier sera validé et, en cas de succès, vous pourrez cliquer sur Publier pour rendre la configuration immédiatement disponible pour vos applications et vos utilisateurs.
Node.js
function publishTemplate() { var config = admin.remoteConfig(); var template = config.createTemplateFromJSON( fs.readFileSync('config.json', 'UTF8')); config.publishTemplate(template) .then(function (updatedTemplate) { console.log('Template has been published'); console.log('ETag from server: ' + updatedTemplate.etag); }) .catch(function (err) { console.error('Unable to publish template.'); console.error(err); }); }
Java
try { Template publishedTemplate = FirebaseRemoteConfig.getInstance() .publishTemplateAsync(template).get(); System.out.println("Template has been published"); // See the ETag of the published template. System.out.println("ETag from server: " + publishedTemplate.getETag()); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Unable to publish template."); System.out.println(rcError.getMessage()); } }
REST
curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename
Pour cette commande curl, vous pouvez spécifier le contenu à l'aide du caractère "@", suivi du nom de fichier.
Remote Config personnalisations et conditions sont incluses dans les modèles téléchargés. Il est donc important de connaître les limites suivantes lorsque vous tentez de publier dans un autre projet :
Les personnalisations ne peuvent pas être importées d'un projet à un autre.
Par exemple, si vous avez activé les personnalisations dans votre projet et que vous téléchargez et modifiez un modèle, vous pouvez le publier dans le même projet, mais vous ne pouvez pas le publier dans un autre projet, sauf si vous supprimez les personnalisations du modèle.
Les conditions peuvent être importées d'un projet à un autre, mais notez que toutes les valeurs conditionnelles spécifiques (telles que les ID d'application ou les audiences) doivent exister dans le projet cible avant la publication.
Par exemple, si vous avez un paramètre Remote Config qui utilise une condition spécifiant une valeur de plate-forme
iOS, le modèle peut être publié dans un autre projet, car les valeurs de plate-forme sont les mêmes pour tous les projets. Toutefois, s'il contient une condition qui repose sur un ID d'application ou une audience utilisateur spécifique qui n'existe pas dans le projet cible, la validation échouera.Si le modèle que vous prévoyez de publier contient des conditions qui reposent sur Google Analytics, Analytics doit être activé dans le projet cible.
Télécharger les valeurs par défaut du modèle Remote Config
É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 Remote Config paramètres. Vous devez également synchroniser régulièrement les valeurs par défaut de votre client d'application et les valeurs de paramètre par défaut du backend 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 simplifier ce processus en téléchargeant des fichiers qui contiennent uniquement les paires clé-valeur pour tous les paramètres et leurs valeurs par défaut dans le modèle Remote Config 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 régulièrement les valeurs par défaut Remote Config avant toute nouvelle version d'application pour vous assurer que votre application et le backend Remote Config restent synchronisés.
Pour télécharger un fichier contenant les valeurs par défaut du modèle :
REST
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 format, selon le format de fichier que vous souhaitez télécharger.
Firebase console
- Dans l'onglet "Paramètres", ouvrez le Menu, puis sélectionnez Télécharger les valeurs par défaut.
- 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 en savoir plus sur l'importation des valeurs par défaut Remote Config dans votre application, consultez les pages suivantes :
Définir les valeurs de paramètre par défaut dans l'application pour Android
Définir les valeurs de paramètre par défaut dans l'application pour iOS
Définir les valeurs de paramètre par défaut dans l'application pour le Web
Définir les valeurs de paramètre par défaut dans l'application pour Unity
Définir les valeurs de paramètre par défaut dans l'application pour C++