Estrategias de carga de Firebase Remote Config

Firebase Remote Config proporciona mucha flexibilidad en relación con cómo y cuándo recuperar valores nuevos del servidor y activarlos en tu app, lo que te permite garantizar una experiencia de calidad para el usuario final; para ello, puedes controlar el tiempo de cualquier cambio visible de la configuración. Puedes recuperar valores nuevos cuando se inicia la aplicación con fetchAndActivate() y usar Remote Config en tiempo real como método complementario para recuperar automáticamente los valores de parámetros más recientes después de que se publique una nueva versión de tu Remote Config.

En esta guía, se analizan algunas estrategias de carga y consideraciones clave que te permitirán elegir la mejor opción para tu app.

Estrategia 1: Recuperar y activar en la carga

En esta estrategia, tu app llamará a fetchAndActivate() cuando esta se inicie por primera vez para recuperar valores nuevos de Remote Config y activarlos en cuanto terminen de cargarse. Este enfoque simple funciona bien para los cambios de configuración que no generan modificaciones visuales considerables en la IU. Sin embargo, debes evitarlo en cualquier situación en la que la IU pueda cambiar notablemente mientras los usuarios están en pleno uso.

Después de que tu app llama a fetchAndActivate(), puede comenzar a escuchar las actualizaciones de los valores de parámetros en tiempo real llamando a addOnConfigUpdateListener. Con este método, se escuchan las actualizaciones de valores de parámetros que realice el servidor y, luego, se obtienen automáticamente y se llama al objeto de escucha. Una estrategia sencilla es activar los valores nuevos en el objeto de escucha. Sin embargo, como se mencionó para fetchAndActivate(), se debe evitar la activación inmediata para IU sensibles.

Estrategia 2: Activar detrás de la pantalla de carga

Como solución al posible problema de IU que se presenta en la estrategia 1, puedes usar una pantalla de carga. En lugar de iniciar la app de inmediato, muestra una pantalla de carga y llama a fetchAndActivate en el controlador de finalización. Justo después de eso, y usando de nuevo una devolución de llamada o una notificación, descarta la pantalla de carga y permite que el usuario comience a interactuar con tu app.

Si usas esta estrategia, te recomendamos que agregues un tiempo de espera a la pantalla de carga. El tiempo de espera de un minuto de Remote Config puede ser demasiado largo para una experiencia de calidad de inicio de app para los usuarios.

Escuchar las actualizaciones de Remote Config en tiempo real llamando a addOnConfigUpdateListener funciona bien con esta estrategia. Agrega el objeto de escucha cuando se muestre la pantalla de carga y, luego, usa activate() en uno o más puntos de tu app, donde los valores de Remote Config no causen cambios visuales significativos.

Estrategia 3: Cargar valores nuevos para el siguiente inicio

Una estrategia eficaz es cargar valores de configuración nuevos para que se activen en el siguiente inicio de tu app. En esta estrategia, la app activa los valores recuperados en el inicio antes de intentar recuperar otros nuevos, ya que se opera bajo el supuesto de que puede haber recuperado valores de configuración nuevos, pero aún no los ha activado. El orden de las operaciones para esta estrategia es el siguiente:

  1. Al inicio, activa de inmediato los valores recuperados previamente. Esta acción aplica cualquier valor que hayas descargado del servidor en una sesión anterior y es casi instantáneo.
  2. Mientras el usuario interactúa con tu app, inicia una llamada asíncrona para recuperar valores nuevos de acuerdo con el intervalo de recuperación mínimo predeterminado y agregar un objeto de escucha de actualizaciones de configuración en tiempo real. El objeto de escucha en tiempo real recuperará automáticamente cualquier valor que se publique en el servidor mientras se ejecuta tu app. Las actualizaciones en tiempo real omiten la configuración del intervalo de recuperación mínimo.
  3. En el controlador de finalización o la devolución de llamada para la llamada de recuperación, no hagas nada. Tu app mantendrá los valores descargados hasta que los actives la próxima vez que se inicie.

Con esta estrategia, el tiempo de espera del usuario se minimiza en gran medida. La combinación de las estrategias de recuperación y de objetos de escucha en tiempo real con las llamadas de activate() según sea necesario durante el ciclo de vida de la app garantiza que los usuarios tengan los valores más recientes de Remote Config cuando interactúen con tu app.

Estrategias de carga no recomendadas

Como pudiste ver en la explicación anterior sobre las ventajas y desventajas de las cargas, hay un par de patrones de uso que debes evitar.

  • No actualices ni cambies aspectos de la IU mientras el usuario la está viendo o interactuando con ella, a menos que tengas una buena justificación comercial o de la app para hacerlo, como quitar opciones relacionadas con una promoción que acaba de finalizar.
  • No envíes cantidades masivas de solicitudes de recuperación simultáneas, ya que podrías provocar que el servidor limite la app. Si necesitas recuperar actualizaciones con frecuencia, usa Remote Config en tiempo real. Si bien el riesgo de limitación es bajo en la mayoría de los casos de producción, puede ser un problema durante el desarrollo activo, y Remote Config en tiempo real está diseñado para este caso de uso. Consulta la guía sobre regulación.
  • No dependas de la conectividad de red para obtener valores de Remote Config. Establece valores de parámetros predeterminados en la app para que siempre se comporte según lo previsto. De forma periódica, puedes mantener sincronizados los valores predeterminados del backend de la app y de Remote Config cono los valores predeterminados descargados de la plantilla.

Próximos pasos

Estas tres estrategias básicas no son todas las formas de cargar valores de configuración. Según tus necesidades, podrías idear estrategias mucho más sofisticadas.

Consulta la referencia de la API de tu plataforma a fin de obtener más información sobre las llamadas específicas para recuperar y activar valores de configuración.