Puedes usar Firebase Remote Config para definir parámetros en tu aplicación y actualizar sus valores en la nube, lo que te permite modificar la apariencia y el comportamiento de tu aplicación sin distribuir una actualización de la aplicación. Esta guía lo guía a través de los pasos para comenzar y proporciona código de muestra, todo el cual está disponible para clonar o descargar desde el repositorio de GitHub firebase/quickstart-android .
Paso 1: agrega Firebase y el SDK de Remote Config a tu aplicación
Si aún no lo has hecho, agrega Firebase a tu proyecto de Android .
Para Remote Config, se requiere Google Analytics para la orientación condicional de instancias de aplicaciones a audiencias y propiedades de usuario. Asegúrese de habilitar Google Analytics en su proyecto.
En el archivo Gradle de su módulo (nivel de aplicación) (generalmente
<project>/<app-module>/build.gradle.kts
o<project>/<app-module>/build.gradle
), agregue la dependencia para Remote Config biblioteca para Android. Recomendamos utilizar Firebase Android BoM para controlar el control de versiones de la biblioteca.Además, como parte de la configuración de Analytics, debes agregar el SDK de Firebase para Google Analytics a tu aplicación.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.8.0")) // Add the dependencies for the Remote Config and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-config") implementation("com.google.firebase:firebase-analytics") }
Al usar Firebase Android BoM , su aplicación siempre usará versiones compatibles de las bibliotecas de Firebase Android.
¿Busca un módulo de biblioteca específico de Kotlin? A partir de octubre de 2023 (Firebase BoM 32.5.0) , tanto los desarrolladores de Kotlin como los de Java podrán depender del módulo de biblioteca principal (para más detalles, consulte las preguntas frecuentes sobre esta iniciativa ).(Alternativa) Agregue dependencias de la biblioteca de Firebase sin usar la BoM
Si elige no utilizar la BoM de Firebase, debe especificar cada versión de la biblioteca de Firebase en su línea de dependencia.
Tenga en cuenta que si usa varias bibliotecas de Firebase en su aplicación, le recomendamos encarecidamente usar la BoM para administrar las versiones de la biblioteca, lo que garantiza que todas las versiones sean compatibles.
dependencies { // Add the dependencies for the Remote Config and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-config:21.6.3") implementation("com.google.firebase:firebase-analytics:21.6.1") }
Paso 2: Obtenga el objeto singleton de Remote Config
Obtenga una instancia de objeto de Remote Config y establezca el intervalo de recuperación mínimo para permitir actualizaciones frecuentes:
Kotlin+KTX
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
El objeto singleton se utiliza para almacenar valores de parámetros predeterminados en la aplicación, recuperar valores de parámetros actualizados desde el backend y controlar cuándo los valores recuperados están disponibles para su aplicación.
Durante el desarrollo, se recomienda establecer un intervalo de recuperación mínimo relativamente bajo. Consulte Limitación para obtener más información.
Paso 3: establecer valores de parámetros predeterminados en la aplicación
Puede establecer valores de parámetros predeterminados en la aplicación en el objeto de Remote Config, de modo que su aplicación se comporte según lo previsto antes de conectarse al backend de Remote Config y para que los valores predeterminados estén disponibles si no se establece ninguno en el backend.
Defina un conjunto de nombres de parámetros y valores de parámetros predeterminados utilizando un objeto Map o un archivo de recursos XML almacenado en la carpeta
res/xml
de su aplicación. La aplicación de ejemplo de inicio rápido de Remote Config utiliza un archivo XML para definir nombres y valores de parámetros predeterminados.Si ya configuró los valores de los parámetros del backend de Remote Config, puede descargar un archivo XML generado que incluya todos los valores predeterminados y guardarlo en el directorio
res/xml
de su aplicación:DESCANSAR
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
Consola de base de fuego
En la pestaña Parámetros , abra el menú y seleccione Descargar valores predeterminados .
Cuando se le solicite, habilite .xml para Android y luego haga clic en Descargar archivo .
Agregue estos valores al objeto Remote Config usando
setDefaultsAsync(int)
, como se muestra:Kotlin+KTX
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Paso 4: Obtenga valores de parámetros para usar en su aplicación
Ahora puede obtener valores de parámetros del objeto Remote Config. Si establece valores en el backend, los recupera y luego los activa, esos valores estarán disponibles para su aplicación. De lo contrario, obtienes los valores de los parámetros en la aplicación configurados usando setDefaultsAsync(int)
. Para obtener estos valores, llame al método que se enumera a continuación que se asigna al tipo de datos esperado por su aplicación, proporcionando la clave del parámetro como argumento:
Paso 5: Establecer los valores de los parámetros en el backend de Remote Config
Con la consola Firebase o las API de backend de Remote Config , puedes crear nuevos valores predeterminados del lado del servidor que anulan los valores en la aplicación según la lógica condicional o la orientación del usuario que desees. Esta sección describe los pasos de Firebase console para crear estos valores.
- En Firebase console , abre tu proyecto.
- Seleccione Remote Config en el menú para ver el panel de Remote Config.
- Defina parámetros con los mismos nombres que los parámetros que definió en su aplicación. Para cada parámetro, puede establecer un valor predeterminado (que eventualmente anulará el valor predeterminado correspondiente en la aplicación) y también puede establecer valores condicionales. Para obtener más información, consulte Parámetros y condiciones de Remote Config .
Paso 6: buscar y activar valores
- Para recuperar valores de parámetros del backend de Remote Config, llame al método
fetch()
. Cualquier valor que establezca en el backend se recupera y almacena en el objeto de Remote Config. Para que los valores de los parámetros recuperados estén disponibles para su aplicación, llame al método
activate()
.Para los casos en los que desee recuperar y activar valores en una sola llamada, puede usar una solicitud
fetchAndActivate()
para recuperar valores del backend de Remote Config y ponerlos a disposición de la aplicación:Kotlin+KTX
remoteConfig.fetchAndActivate() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { val updated = task.result Log.d(TAG, "Config params updated: $updated") Toast.makeText( this, "Fetch and activate succeeded", Toast.LENGTH_SHORT, ).show() } else { Toast.makeText( this, "Fetch failed", Toast.LENGTH_SHORT, ).show() } displayWelcomeMessage() }
Java
mFirebaseRemoteConfig.fetchAndActivate() .addOnCompleteListener(this, new OnCompleteListener<Boolean>() { @Override public void onComplete(@NonNull Task<Boolean> task) { if (task.isSuccessful()) { boolean updated = task.getResult(); Log.d(TAG, "Config params updated: " + updated); Toast.makeText(MainActivity.this, "Fetch and activate succeeded", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "Fetch failed", Toast.LENGTH_SHORT).show(); } displayWelcomeMessage(); } });
Debido a que estos valores de parámetros actualizados afectan el comportamiento y la apariencia de su aplicación, debe activar los valores recuperados en un momento que garantice una experiencia fluida para su usuario, como la próxima vez que el usuario abra su aplicación. Consulte Estrategias de carga de Remote Config para obtener más información y ejemplos.
Paso 7: escuche las actualizaciones en tiempo real
Después de recuperar los valores de los parámetros, puede usar Remote Config en tiempo real para escuchar las actualizaciones desde el backend de Remote Config. Remote Config en tiempo real envía señales a los dispositivos conectados cuando hay actualizaciones disponibles y recupera automáticamente los cambios después de publicar una nueva versión de Remote Config.
Las actualizaciones en tiempo real son compatibles con Firebase SDK para Android v21.3.0+ (Firebase BoM v31.2.4+).
En su aplicación, use
addOnConfigUpdateListener()
para comenzar a escuchar actualizaciones y recuperar automáticamente cualquier valor de parámetro nuevo. Implemente la devolución de llamadaonUpdate()
para activar la configuración actualizada.Kotlin+KTX
remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener { override fun onUpdate(configUpdate : ConfigUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys); if (configUpdate.updatedKeys.contains("welcome_message")) { remoteConfig.activate().addOnCompleteListener { displayWelcomeMessage() } } } override fun onError(error : FirebaseRemoteConfigException) { Log.w(TAG, "Config update error with code: " + error.code, error) } })
Java
mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() { @Override public void onUpdate(ConfigUpdate configUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys()); mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener
() { @Override public void onComplete(@NonNull Task task) { displayWelcomeMessage(); } }); } @Override public void onError(FirebaseRemoteConfigException error) { Log.w(TAG, "Config update error with code: " + error.getCode(), error); } }); La próxima vez que publique una nueva versión de su Remote Config, los dispositivos que ejecutan su aplicación y escuchan los cambios llamarán a
ConfigUpdateListener
.
estrangulamiento
Si una aplicación se recupera demasiadas veces en un período corto, las llamadas de recuperación se limitan y el SDK devuelve FirebaseRemoteConfigFetchThrottledException
. Antes de la versión 17.0.0 del SDK, el límite era de 5 solicitudes de recuperación en un período de 60 minutos (las versiones más nuevas tienen límites más permisivos).
Durante el desarrollo de la aplicación, es posible que desees recuperar y activar configuraciones con mucha frecuencia (muchas veces por hora) para poder iterar rápidamente a medida que desarrollas y pruebas tu aplicación. Las actualizaciones de Remote Config en tiempo real omiten automáticamente el caché cuando la configuración se actualiza en el servidor. Para permitir una iteración rápida en un proyecto con hasta 10 desarrolladores, puedes configurar temporalmente un objeto FirebaseRemoteConfigSettings
con un intervalo de recuperación mínimo bajo ( setMinimumFetchIntervalInSeconds
) en tu aplicación.
El intervalo de recuperación mínimo predeterminado para Remote Config es de 12 horas, lo que significa que las configuraciones no se recuperarán del backend más de una vez en un período de 12 horas, independientemente de cuántas llamadas de recuperación se realicen realmente. Específicamente, el intervalo de recuperación mínimo se determina en el siguiente orden:
- El parámetro en
fetch(long)
- El parámetro en
FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
- El valor predeterminado de 12 horas.
Para establecer el intervalo de recuperación mínimo en un valor personalizado, use FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)
.
Próximos pasos
Si aún no lo ha hecho, explore los casos de uso de Remote Config y eche un vistazo a algunos de los conceptos clave y la documentación de estrategias avanzadas, que incluyen: