Las plantillas de Remote Config son conjuntos de parámetros y condiciones en formato JSON que creaste para tu proyecto de Firebase. Puedes crear plantillas de cliente, desde las que tu app recupera valores, y plantillas de servidor, desde las que los clientes del servidor pueden recuperar valores.
En esta sección, se analizan las plantillas de cliente. Para obtener información sobre las plantillas específicas del servidor, haz clic en Plantillas de servidor.Puedes modificar y administrar la plantilla con Firebase console, que muestra el contenido de la plantilla en formato gráfico en las pestañas Pestañas Parámetros y Condiciones.
También puedes usar la API de REST y el SDK de Admin de Remote Config o Firebase CLI para modificar y administrar tu plantilla de cliente.
Este es un ejemplo de un archivo de plantilla de cliente:
{
"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"
}
}
Puedes realizar estas tareas de administración de versiones con Firebase console:
- Crear una lista con todas las versiones de plantilla almacenadas
- Recuperar una versión específica
- Revertir a una versión de cliente específica
- Borrar plantillas de Remote Config de la página Historial de cambios
También puedes enumerar plantillas, recuperarlas y revertirlas con Firebase CLI y las APIs de backend de Remote Config.
Hay un límite total de 300 versiones almacenadas desde el principio por tipo de plantilla (300 plantillas de cliente y 300 plantillas de servidor), que incluyen los números de versión almacenados para las plantillas borradas. Si publicas más de 300 versiones de plantilla por tipo de plantilla durante el ciclo de vida de un proyecto, las versiones más antiguas se borran y se mantiene un máximo de 300 versiones de ese tipo.
Cada vez que actualizas los parámetros, Remote Config crea
una nueva plantilla de Remote Config con versión y almacena la anterior como
una versión que puedes recuperar o revertir según sea necesario. Los números de versión
aumentan de manera secuencial a partir del valor inicial que almacenó Remote Config.
Todas las plantillas incluyen un campo version
que contiene metadatos sobre esa
versión específica.
Puedes borrar las plantillas de Remote Config según sea necesario desde la página Historial de cambios de Remote Config console.
Administra las versiones de plantillas de Remote Config
En esta sección, se describe cómo administrar las versiones de tu plantilla de Remote Config.
Si quieres obtener más detalles para crear, modificar y guardar plantillas de manera programática, consulta Modifica Remote Config de manera programática.
Genera una lista con todas las versiones almacenadas de la plantilla de Remote Config
Puedes recuperar una lista de todas las versiones almacenadas de la plantilla de Remote Config. Para ello, sigue estos pasos:
Consola de Firebase
En la pestaña Parámetros, selecciona el ícono de reloj que se muestra en la esquina superior derecha. Esta acción abrirá la página Historial de cambios, en la que encontrarás una lista de todas las versiones almacenadas de la plantilla en un menú de lista ubicado en el lado derecho.
Los detalles que se muestran de cada versión almacenada incluyen información que determina si los cambios se originaron en Console, con la API de REST, por una reversión o si fueron cambios incrementales de la plantilla que se guardaron de manera forzosa.
Firebase CLI
firebase remoteconfig:versions:list
Usa la opción --limit
para limitar la cantidad de versiones que se muestran.
Pasa “0” para recuperar todas las versiones.
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 lista de plantillas incluye los metadatos de todas las versiones almacenadas, entre ellos la hora de actualización, el usuario que la realizó y cómo se hizo. Este es un ejemplo de un elemento de versión:
```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"
}]
}
```
Recupera una versión específica de la plantilla de Remote Config
Puedes recuperar cualquier versión específica almacenada de la plantilla de Remote Config. Para recuperar una versión de plantilla almacenada, haz lo siguiente:
Consola de Firebase
De forma predeterminada, se muestra la plantilla activa actual en el panel de detalles de la pestaña Historial de cambios. Para ver los detalles de otra versión de la lista, selecciónala en el menú de la derecha.
Puedes ver las diferencias detalladas entre la versión actual seleccionada y cualquier otra versión almacenada. Para ello, coloca el cursor sobre el menú contextual de cualquier versión que no esté elegida y selecciona Comparar con la versión seleccionada.
Firebase CLI
firebase remoteconfig:get -v VERSION_NUMBER
De manera opcional, puedes escribir el resultado en un archivo especificado con -o, FILENAME
.
Node.js
Pasa getTemplate()
sin argumentos a fin de obtener la versión más reciente de la plantilla o usa getTemplateAtVersion()
para recuperar una versión específica.
// 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
El parámetro de URL ?version_number
solo es válido para las operaciones GET
, no puedes usarlo con el fin de especificar números de versión de las actualizaciones. Si usas una solicitud get similar sin el parámetro ?version_number
, se recuperará la plantilla activa actual.
Revierte a una versión almacenada específica de la plantilla de Remote Config
Puedes realizar una reversión a cualquier versión almacenada de la plantilla. Para revertir una plantilla, haz lo siguiente:
Consola de Firebase
En la esquina superior derecha de la página Historial de cambios, se muestra un botón de opciones que podrás usar para elegir entre las plantillas aptas a las que puedes revertir. Haz clic en el botón y confirma la operación solo si estás seguro de que quieres realizar la reversión y usar esos valores de inmediato en todos los usuarios y las apps.
Firebase CLI
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
Para revertir a una plantilla almacenada de Remote Config, realiza una solicitud HTTP POST con
el método personalizado :rollback
. Incluye en el cuerpo de la solicitud la versión específica a la que
quieres revertir. Por ejemplo:
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 respuesta incluye el contenido de la plantilla almacenada que está activa y los metadatos de su versión nueva.
Ten en cuenta que revertir la plantilla crea efectivamente una versión numerada nueva. Por ejemplo, revertir de la versión 10 a la 6 crea una copia nueva de la versión 6, cuya única diferencia con la versión original es que su número de versión será 11. La versión 6 original seguirá almacenada (si no llegó al límite de vencimiento) y la versión 11 de la plantilla será la activa.
Borra una plantilla de Remote Config
Puedes borrar plantillas de Remote Config desde Firebase console. Para borrar una plantilla de Remote Config, sigue estos pasos:
1. En la página Parámetros de Remote Config, haz clic en Historial de cambios.Ve a la plantilla que deseas borrar, haz clic en
Más y, luego, selecciona Borrar.Cuando se te solicite confirmar la eliminación, haz clic en Borrar.
Descarga y publica plantillas de Remote Config
Descarga y publica plantillas de Remote Config para integrarlas en tus sistemas de compilación y de control de origen, automatizar las actualizaciones de configuración y mantener los parámetros y valores sincronizados en múltiples proyectos.
Puedes descargar la plantilla de Remote Config activa actualmente de manera programática o Luego, puedes actualizar el archivo JSON exportado y publicarlo en el mismo proyecto, o en uno nuevo o existente.
Supongamos que tienes múltiples proyectos que representan diferentes etapas del ciclo de vida del desarrollo de un software, como los entornos de desarrollo, prueba, etapa de pruebas y producción. En este caso, puedes ascender una plantilla completamente probada del entorno de etapa de pruebas a tu entorno de producción si la descargas desde el proyecto de etapa de pruebas y la publicas en el de producción.
También puedes usar este método para migrar parámetros de configuración de un proyecto a otro o propagar un proyecto nuevo con parámetros y valores de un proyecto establecido.
En las plantillas exportadas, no se incluyen los parámetros ni valores de parámetros creados específicamente como variantes en un experimento de A/B Testing.
Para exportar y para importar plantillas de Remote Config, sigue estos pasos:
- Descarga la plantilla de configuración de Remote Config actual.
- Valida la plantilla de Remote Config.
- Publica la plantilla de Remote Config.
Descarga la plantilla actual de Remote Config
Usa el siguiente comando para descargar la plantilla de Remote Config activa en formato JSON:
Consola de Firebase
- En la pestaña Parámetros o Condiciones de Remote Config, abre el Menú y selecciona Descargar archivo de configuración actual.
- Cuando se te solicite, haz clic en Descargar archivo de configuración, elige la ubicación en la que deseas guardar el archivo y, luego, haz clic en Guardar.
Firebase CLI
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
Este comando envía la carga útil JSON a un archivo y los encabezados
(incluida la Etag) a un archivo headers
independiente.
Valida la plantilla de Remote Config
Puedes validar las actualizaciones de tus plantillas antes de publicarlas con Firebase Admin SDK o la API de REST. Las plantillas también se validan cuando intentas realizar publicaciones desde Firebase CLI o Firebase console.En el proceso de validación de la plantilla, se comprueba si hay errores, como claves duplicadas para
parámetros y condiciones, nombres de condiciones no válidos, condiciones inexistentes o
ETags con errores de formato. Por ejemplo, una solicitud que contiene más claves que la cantidad
permitida (2,000) mostraría el mensaje de error 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
Adjunta el parámetro de URL ?validate_only=true
a tu solicitud de publicación para validar
las actualizaciones de plantillas:
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 tu plantilla se validó correctamente, el comando curl muestra la
plantilla JSON que enviaste y, en el archivo headers
guardado, encontrarás
un estado HTTP/2 200 y una ETag actualizada con el sufijo -0
. Si no
se validó tu plantilla, recibirás el error de validación en la
respuesta JSON y tu archivo headers
contendrá una respuesta que no es 200
(y ninguna ETag).
Publica la plantilla de Remote Config
Después de descargar una plantilla, realizar los cambios necesarios en el contenido JSON y validarla, puedes publicarla en un proyecto.
Publicar una plantilla reemplaza toda la plantilla de configuración existente por el archivo actualizado y aumenta la versión de la plantilla en uno. Debido a que se reemplaza toda la configuración, si borras un parámetro del archivo JSON y lo publicas, el parámetro se borra del servidor y deja de estar disponible para los clientes.
Después de la publicación, los cambios en los parámetros y los valores estarán disponibles de inmediato para tus apps y usuarios. Si es necesario, puedes revertir a una versión anterior.
Usa los siguientes comandos para publicar tu plantilla:
Consola de Firebase
- En la pestaña Parámetros o Condiciones de Remote Config, abre el Menú y selecciona Publicar desde un archivo.
- Cuando se te solicite, haz clic en Explorar, navega hasta el archivo de Remote Config que quieres publicar y haz clic en Seleccionar.
- El archivo se validará y, si se ejecuta correctamente, puedes hacer clic en Publicar a fin de que la configuración esté disponible inmediatamente para tus apps y usuarios.
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
Para el comando curl
, puedes especificar el contenido mediante el carácter “@”
seguido del nombre del archivo.
Las personalizaciones y condiciones de Remote Config se incluyen en las plantillas descargadas, por lo que es importante tener en cuenta las siguientes limitaciones cuando intentes publicar en un proyecto diferente:
Las personalizaciones no se pueden importar de un proyecto a otro.
Por ejemplo, si tienes personalizaciones habilitadas en tu proyecto y descargas y editas una plantilla, puedes publicarla en el mismo proyecto, pero no en otro proyecto, a menos que borres las personalizaciones de la plantilla.
Las condiciones se pueden importar de un proyecto a otro, pero ten en cuenta que cualquier valor condicional específico (como IDs de app o públicos) debe existir en el proyecto de destino antes de la publicación.
Por ejemplo, si tienes un parámetro de Remote Config que usa una condición que especifica un valor de plataforma de
iOS
, la plantilla se puede publicar en otro proyecto, ya que los valores de plataforma son los mismos para cualquier proyecto. Sin embargo, si contiene una condición que depende de un ID de app específico o de un público de usuarios que no existe en el proyecto de destino, la validación fallará.Si la plantilla que quieres publicar contiene condiciones que dependen de Google Analytics, Analytics debe estar habilitado en el proyecto de destino.
Descarga los valores predeterminados de la plantilla de Remote Config
Dado que es posible que tu app no siempre esté conectada a Internet, debes configurar los valores predeterminados de la app del cliente para todos los parámetros de Remote Config. Además, debes sincronizar periódicamente los valores predeterminados del cliente de la app y los parámetros predeterminados del backend de Remote Config, ya que pueden cambiar con el tiempo.
Como se describe en los vínculos específicos de la plataforma al final de esta sección, puedes configurar estos valores predeterminados de forma manual en tu app, o bien optimizar este proceso; para ello, descarga los archivos que contengan solo los pares clave-valor para todos los parámetros y sus valores predeterminados en la plantilla activa de Remote Config. Luego, puedes incluir este archivo en tu proyecto y configurar la app para importar estos valores.
Puedes descargar los archivos en formato XML en las apps para Android, en formato de lista de propiedades (plist) en las apps para iOS y en formato JSON en las apps web.
Recomendamos descargar periódicamente los valores predeterminados de Remote Config antes de cualquier versión nueva de la app para asegurarte de que la app y el backend de Remote Config permanezcan sincronizados.
Para descargar un archivo que contiene los valores predeterminados de la plantilla, haz lo siguiente:
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'
Usa XML
, PLIST
o JSON
como el valor de format
, según el formato
de archivo que desees descargar.
Consola de Firebase
- En la pestaña Parameters, abre el menú y selecciona Download default values.
- Cuando se te solicite, haz clic en el botón de selección que corresponde al formato de archivo que deseas descargar y, luego, selecciona Download file.
Si quieres obtener más información para importar valores predeterminados de Remote Config a tu app, consulta los siguientes recursos:
Configura los valores de parámetros predeterminados en la app para Android
Configura los valores de parámetros predeterminados en la app para iOS
Configura los valores de parámetros predeterminados en la app para la Web
Configura los valores de parámetros predeterminados en la app para Unity
Configura los valores de parámetros predeterminados en la app para C++