获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Versiones y plantillas de configuración remota

La plantilla de Remote Config es el conjunto del lado del servidor de parámetros y condiciones con formato JSON que ha creado para su proyecto de Firebase. Puede modificar y administrar la plantilla mediante Firebase console, que muestra el contenido de la plantilla en formato gráfico en las pestañas Parámetros y Condiciones . También puede usar las API de back-end de Remote Config o Firebase CLI para modificar y administrar su configuración.

Este es un ejemplo de un archivo de plantilla:

  {
    "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"
    }
  }

Cada vez que actualiza los parámetros, Remote Config crea una nueva plantilla de Remote Config con versión y almacena la plantilla anterior como una versión que puede recuperar o revertir según sea necesario. Los números de versión se incrementan secuencialmente desde el valor inicial almacenado por Remote Config. Todas las plantillas incluyen un campo de version como se muestra, que contiene metadatos sobre esa versión específica.

Con Firebase console, Firebase CLI o las API de backend de Remote Config, puede realizar estas tareas de administración de versiones:

  • Listar todas las versiones de plantillas almacenadas
  • Recuperar una versión específica
  • Retroceder a una versión específica

Cuando administre las plantillas de Remote Config, tenga en cuenta el umbral de caducidad: la plantilla de Remote Config activa actual que usa su aplicación no caduca; sin embargo, si se reemplaza por una actualización, la versión anterior solo se almacenará durante 90 días, luego de lo cual caducará y no se podrá recuperar. También hay un límite total de 300 versiones almacenadas. Si desea almacenar o retroceder a una plantilla fuera de esos límites, guárdela y guárdela manualmente.

Administrar versiones de plantillas de Remote Config

Esta sección describe cómo administrar las versiones de su plantilla de configuración remota. Para obtener más detalles sobre cómo crear, modificar y guardar plantillas mediante programación, consulte Modificar Remote Config mediante programación .

Enumerar todas las versiones almacenadas de la plantilla de configuración remota

Puede recuperar una lista de todas las versiones almacenadas de la plantilla de configuración remota. Por ejemplo:

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

DESCANSAR

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

consola base de fuego

En la pestaña Parámetros , seleccione el icono de "reloj" que se muestra en la parte superior derecha. Esto abre la página Historial de cambios que enumera todas las versiones de plantilla almacenadas en un menú de lista a la derecha.

Los detalles que se muestran para cada versión almacenada incluyen información sobre si los cambios se originaron con la Consola, con la API REST, de una reversión o si fueron cambios incrementales de un guardado forzado de la plantilla.

CLI de base de fuego

firebase remoteconfig:versions:list

Utilice la opción --limit para limitar el número de versiones que se devuelven. Pase '0' para obtener todas las versiones.

La lista de plantillas incluye metadatos para todas las versiones almacenadas, incluida la hora de la actualización, el usuario que la realizó y si se realizó a través de la consola o la API REST. Aquí hay un ejemplo de un elemento de versión:

{
  "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"
  }]

Recuperar una versión específica de la plantilla de configuración remota

Puede recuperar cualquier versión almacenada específica de la plantilla de configuración remota. Por ejemplo:

Nodo.js

Pase getTemplate() sin ningún argumento para recuperar la última versión de la plantilla, o para recuperar una versión específica, use 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());

DESCANSAR

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 operaciones GET ; no puede usarlo para especificar números de versión para actualizaciones. Una solicitud de obtención similar sin el parámetro ?version_number recuperaría la plantilla activa actual.

consola base de fuego

De forma predeterminada, el panel de detalles de la pestaña Historial de cambios muestra la plantilla activa actual. Para ver los detalles de otra versión de la lista, selecciónela en el menú de la derecha.

Puede ver una diferencia detallada de la versión seleccionada actualmente y cualquier otra versión almacenada pasando el cursor sobre el menú contextual de cualquier versión no seleccionada y seleccionando Comparar con la versión seleccionada.

CLI de base de fuego

firebase remoteconfig:get -v VERSION_NUMBER

Opcionalmente, puede escribir la salida en un archivo específico con -o, FILENAME .

Revertir a una versión almacenada específica de la plantilla de configuración remota

Puede retroceder a cualquier versión almacenada de la plantilla. Por ejemplo:

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

DESCANSAR

Para revertir a una plantilla de Remote Config almacenada, emita un HTTP POST con el método personalizado :rollback y, en el cuerpo de la solicitud, la versión específica que se aplicará. 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 contiene el contenido de la plantilla almacenada ahora activa, con los metadatos de su nueva versión.

consola base de fuego

Para las versiones de plantilla anteriores elegibles para la reversión, se muestra un botón de opción para revertir a esa versión en la parte superior derecha de la página Historial de cambios . Haga clic y confirme esto solo si está seguro de que desea volver a esa versión y usar esos valores inmediatamente para todas las aplicaciones y usuarios.

CLI de base de fuego

firebase remoteconfig:rollback -v VERSION_NUMBER

Tenga en cuenta que esta operación de reversión crea efectivamente una nueva versión numerada. Por ejemplo, retroceder de la versión 10 a la versión 6 crea efectivamente una nueva copia de la versión 6, que se diferencia de la original solo en que su número de versión es 11. La versión original 6 aún se almacena, suponiendo que no haya llegado a su vencimiento, y la versión 11 se convierte en la plantilla activa.

Descargar y publicar plantillas de configuración remota

Descargue y publique plantillas de configuración remota para integrarlas en sus sistemas de compilación y control de código fuente, automatice las actualizaciones de configuración y mantenga los parámetros y valores sincronizados en varios proyectos.

Puede descargar la plantilla de Remote Config actualmente activa mediante programación o desde Firebase console. Luego puede actualizar el archivo JSON exportado y publicarlo en el mismo proyecto, o publicarlo en un proyecto nuevo o existente.

Supongamos que tiene varios proyectos que representan diferentes etapas de su ciclo de vida de desarrollo de software, como entornos de desarrollo, prueba, ensayo y producción. En este caso, podría promocionar una plantilla completamente probada desde su entorno de prueba a su entorno de producción descargándola de su proyecto de prueba y publicándola en su proyecto de producción.

También puede usar este método para migrar configuraciones de un proyecto a otro o completar un nuevo proyecto con parámetros y valores de un proyecto establecido.

Los parámetros y valores de parámetros creados específicamente como variantes en un experimento de prueba A/B no se incluyen en las plantillas exportadas.

Para exportar e importar plantillas de configuración remota:

  1. Descargue la plantilla de configuración de Remote Config actual .
  2. Valide la plantilla de configuración remota .
  3. Publique la plantilla de configuración remota .

Descargue la plantilla de configuración remota actual

Puede descargar la plantilla de Remote Config actual y activa mediante programación o mediante Firebase console.

Utilice los siguientes comandos para descargar la plantilla de configuración remota activa en formato JSON:

Nodo.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());

DESCANSAR

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

Este comando genera la carga útil de JSON en un archivo y los encabezados (incluido el ETag) en un archivo de headers separado.

consola base de fuego

  1. En la pestaña Parámetros o condiciones de configuración remota , abra el menú y seleccione Descargar el archivo de configuración actual .
  2. Cuando se le solicite, haga clic en Descargar archivo de configuración, elija la ubicación donde desea guardar el archivo y luego haga clic en Guardar .

CLI de base de fuego

firebase remoteconfig:get -o filename

Validar la plantilla de configuración remota

Puede validar las actualizaciones de su plantilla antes de publicarlas mediante el SDK de administración de Firebase o la API REST. Las plantillas también se validan cuando intenta publicar desde Firebase CLI o Firebase console.

El proceso de validación de plantillas busca errores, como claves duplicadas para parámetros y condiciones, nombres de condiciones no válidos o condiciones inexistentes, o ETags con formato incorrecto. Por ejemplo, una solicitud que contenga más de la cantidad permitida de claves (2000) devolvería el mensaje de error, Param count too large .

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

DESCANSAR

Valide las actualizaciones de la plantilla agregando el parámetro de URL ?validate_only=true a su solicitud de publicación:

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 su plantilla se validó correctamente, el comando curl devuelve la plantilla JSON que envió y, en el archivo de headers guardado, encontrará un estado HTTP/2 200 y una ETag actualizada con el sufijo -0 . Si su plantilla no fue validada, recibirá el error de validación en la respuesta JSON y su archivo de headers contendrá una respuesta que no sea 200 (y sin ETag).

Publicar la plantilla de configuración remota

Después de descargar una plantilla, realizar los cambios necesarios en el contenido JSON y validarlo, puede publicarlo en un proyecto.

La publicación de una plantilla reemplaza toda la plantilla de configuración existente con el archivo actualizado y aumenta la versión de la plantilla en uno. Debido a que se reemplaza toda la configuración, si elimina un parámetro del archivo JSON y lo publica, el parámetro se elimina del servidor y ya no está disponible para los clientes.

Después de la publicación, los cambios en los parámetros y valores están disponibles de inmediato para sus aplicaciones y usuarios. Si es necesario, puede retroceder a una versión anterior .

Utilice los siguientes comandos para publicar su plantilla:

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

DESCANSAR

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 este comando curl , puede especificar el contenido usando el carácter "@", seguido del nombre del archivo.

consola base de fuego

  1. En la pestaña Parámetros o condiciones de configuración remota , abra el menú y seleccione Publicar desde un archivo .
  2. Cuando se le solicite, haga clic en Examinar , navegue y seleccione el archivo de configuración remota que desea publicar, luego haga clic en Seleccionar .
  3. El archivo se validará y, si tiene éxito, puede hacer clic en Publicar para que la configuración esté disponible de inmediato para sus aplicaciones y usuarios.

Las personalizaciones y condiciones de Remote Config se incluyen en las plantillas descargadas, por lo que es importante tener en cuenta las siguientes limitaciones al intentar publicar en un proyecto diferente:

  • Las personalizaciones no se pueden importar de un proyecto a otro.

    Por ejemplo, si tiene personalizaciones habilitadas en su proyecto y descarga y edita una plantilla, puede publicarla en el mismo proyecto, pero no puede publicarla en un proyecto diferente a menos que elimine las personalizaciones de la plantilla.

  • Las condiciones se pueden importar de un proyecto a otro, pero tenga en cuenta que cualquier valor condicional específico (como ID de aplicaciones o audiencias) debe existir en el proyecto de destino antes de la publicación.

    Por ejemplo, si tiene 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, porque los valores de plataforma son los mismos para cualquier proyecto. Sin embargo, si contiene una condición que se basa en un ID de aplicación específico o una audiencia de usuario que no existe en el proyecto de destino, la validación fallará.

  • Si la plantilla que planea publicar contiene condiciones que se basan en Google Analytics, Analytics debe estar habilitado en el proyecto de destino.

Descargar los valores predeterminados de la plantilla de configuración remota

Debido a que es posible que su aplicación no siempre esté conectada a Internet, debe configurar los valores predeterminados de la aplicación del lado del cliente para todos los parámetros de configuración remota. También debe sincronizar periódicamente los valores predeterminados del cliente de la aplicación y los valores de los parámetros predeterminados del backend de Remote Config, ya que pueden cambiar con el tiempo.

Como se describe en los enlaces específicos de la plataforma al final de esta sección, puede configurar manualmente estos valores predeterminados en su aplicación o puede simplificar este proceso descargando archivos que contienen solo los pares clave-valor para todos los parámetros y sus valores predeterminados en el plantilla de configuración remota activa. Luego puede incluir este archivo en su proyecto y configurar su aplicación para importar estos valores.

Puede descargar estos archivos en formato XML para aplicaciones Android, formato de lista de propiedades (plist) para aplicaciones iOS y JSON para aplicaciones web.

Recomendamos descargar periódicamente los valores predeterminados de Remote Config antes de cualquier lanzamiento de una nueva aplicación para garantizar que su aplicación y el backend de Remote Config permanezcan sincronizados.

Para descargar un archivo que contiene valores predeterminados de plantilla:

DESCANSAR

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

Utilice XML , PLIST o JSON como valor de format , según el formato de archivo que desee descargar.

consola base de fuego

  1. En la pestaña Parámetros , abra el menú y seleccione Descargar valores predeterminados .
  2. Cuando se le solicite, haga clic en el botón de radio que corresponda al formato de archivo que desea descargar y luego haga clic en Descargar archivo .

Para obtener más información sobre la importación de valores predeterminados de Remote Config en su aplicación, consulte: