Seguimos adentrándonos en las diferentes herramientas que nos ofrece Firebase para el almacenamiento en la nube. En este primer post vimos cuáles son esas herramientas y vimos en detalle la primera de ellas: Cloud Firestore.
En este segundo post hablamos de cómo crear una base de datos y conectarla a nuestra app con Firebase y en el tercer post analizamos las dos bases de datos de las que disponemos en Firebase: Cloud Firestore y Realtime Database.
Ahora llega el turno de la última herramienta que nos proporciona Firebase para el almacenamiento en la nube: Remote Config.
Firebase Remote Config es un servicio de nube que te permite almacenar datos del tipo clave-valor. Remote ofrece variaciones de la experiencia del usuario de la aplicación para distintos segmentos según la versión de la app, el idioma, el público de Google Analytics y los segmentos importados.
Remote Config sirve para almacenar datos simples, por ejemplo de configuración, que nos pueden servir para cambiar el aspecto y comportamiento de nuestra app sin que los usuarios tengan que descargar una nueva versión del store.
Por ejemplo, puedes cambiar el diseño o los colores de la app como apoyo para una promoción de temporada, sin necesidad de publicar una actualización.
Antes de importarlo en tu proyecto, deberás habilitar Remote Config dentro de tu proyecto en la consola de Firebase. Para ello, una vez dentro de tu proyecto, deberás entrar en Remote Config y pulsar en Crear configuración.
A continuación, tendrás que definir tu primer parámetro de configuración y asignarle un valor por defecto para que esa personalización no se aplique.
Para el ejemplo, crearemos un parámetro llamado show_banner_promo cuyo valor por defecto será true.
Una vez definido, ya tenemos configurado nuestro almacenamiento de configuración Remote Config en nuestro proyecto de Firebase. El aspecto será algo así:
Y si pulsamos sobre el lápiz (Editar) podremos ver cómo hemos configurado este parámetro:
Ahora, nos vamos a Android Studio y empezamos a usar Remote Config en nuestra app.
Lo primero es importar el módulo de firebase a tu fichero build.gradle. En este caso, necesitamos agregar también el SDK de Firebase para Google Analytics:
implementation platform('com.google.firebase:firebase-bom:29.1.0')
implementation 'com.google.firebase:firebase-config-ktx'
implementation 'com.google.firebase:firebase-analytics-ktx'
Después, tenemos que definir los valores por defecto que tomarán esos parámetros en la app. Para ellos, crearemos un xml “R.xml.remote_config_defaults” y lo alojaremos dentro de la carpeta res/xml de nuestra app.
Para este ejemplo, acorde al valor creado en la consola de Firebase, nuestro xml será:
<?xml version="1.0" encoding="utf-8"?><!-- START xml_defaults -->
<defaultsMap>
<entry>
<key>show_banner_promo</key>
<value>true</value>
</entry>
</defaultsMap>
Para cargar esa configuración en la app:
val remoteConfig = FirebaseRemoteConfig.getInstance()
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Y para obtener los datos de Remote Config desde nuestra app:
remoteConfig.fetch()
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
val updated = task.result
remoteConfig.activate()
Log.d(TAG, "Config params updated: $updated")
Toast.makeText(this, "Fetch and activate succeeded",
Toast.LENGTH_SHORT).show()
val showBannerPromo = remoteConfig.getBoolean(“show_banner_promo”)
if (showBannerPromo)
//Do something to show banner…
} else {
Toast.makeText(this, "Fetch failed",
Toast.LENGTH_SHORT).show()
// Do something…
}
}
Como vemos, en función del valor leído de nuestro servidor, activaremos en nuestra app una promoción de temporada.
Remote Config no se queda sólo en este tipo de configuraciones simples, sino que va mucho más allá. Por ejemplo, te permite añadir condiciones para que esos parámetros tomen diferentes valores en función del país en el que se encuentre el usuario, la versión de al app, etc.
En el siguiente ejemplo vamos a definir una condición dentro de nuestro parámetro de configuración show_banner_promo que nos permitirá controlar que si estamos en Portugal, esa promoción no se active, es decir, no se muestre al acceder a nuestra app.
Para ello, entraremos en la consola de Firebase en el apartado de Remote Config y pulsaremos en el lápiz para editar nuestro parámetro de configuración. Veremos la pantalla que vimos anteriormente y pulsaremos en Agregar nuevo - Valor condicional:
En la siguiente pantalla, definiremos un nombre para la condición, a la que también podemos asignar un color.
Para definir la estructura de la condición tendremos varias opciones como filtrar por app (si tuviéramos varias aplicaciones en nuestro proyecto de Firebase), número de versión, país, fecha y hora o un número de usuarios aleatorio.
Para el ejemplo, el nombre de la condición será country_filter, color rojo y seleccionaremos el filtro por País o región, seleccionando Francia.
El siguiente paso es asignar un valor a esta condición. En nuestro caso, le daremos el valor false, ya que queremos que no se muestre la promoción si la app es ejecutada en Francia.
Si volvemos a observar nuestra consola de Firebase, veremos lo siguiente:
Como podemos comprobar, si la app es ejecutada en Francia el valor de nuestro parámetro de configuración será false, pero si es ejecutada en otra región o país, el valor que leeremos en nuestra aplicación será true.
Hasta aquí hemos visto cómo crear nuestros propios parámetros de configuración, cómo crear condiciones que varíen el valor de esos parámetros y cómo obtener esos valores en nuestra aplicación para aplicar cierta personalización que necesitemos para nuestro proyecto.
Sin embargo, al igual que hemos hecho en el resto de post de la colección, en este post hemos querido mostrar cómo empezar a trabajar con Remote Config para romper esa barrera inicial. Pero sin duda, es un servicio muy potente de firebase en el que merece la pena profundizar para sacar mayor rendimiento a tu app.
Con este último post hemos finalizado la serie en la que hemos analizado las cuatro diferentes herramientas que nos ofrece Firebase para el almacenamiento en la nube.
En ellos hemos aprendido las instrucciones básicas para empezar a trabajar con cada una de ellas e incorporarlas a nuestro proyecto. En cualquier caso, todas ellas ofrecen servicios más complejos que te animamos a descubrir y si tienes alguna, déjanos un comentarios.
Además, como comentamos en el primer post hay otras dos herramientas de Firebase muy interesantes como son Firebase Authentication y Firebase Functions que os contaremos más en profundidad próximamente.
Tell us what you think.