Explicación de la app de muestra de Firebase Remote Config para Android

En esta guía, se explican los pasos que debes seguir para integrar Remote Config en tu app de Android. Para obtener más información sobre la API de Remote Config para Android, consulta com.google.firebase.remoteconfig.

Requisitos

Configura el proyecto según las instrucciones que se proporcionan en cómo agregar Firebase a tu proyecto de Android.

A continuación, agrega la siguiente dependencia al build.gradle del módulo de tu app:

    implementation 'com.google.firebase:firebase-config:16.3.0'

Crea un proyecto de Remote Config para la guía de inicio rápido de muestra

La guía de inicio rápido de muestra proporciona un ejemplo del uso de Remote Config para definir el mensaje de bienvenida de la app de muestra. Antes de ejecutar la guía, debes configurar un proyecto de Remote Config.

En Firebase console, haz clic en Crear proyecto nuevo y sigue las instrucciones para configurar un proyecto de Firebase Remote Config con los siguientes parámetros:

Clave de parámetro Valor predeterminado Notas:
welcome_message Welcome to this sample app Cámbialo si deseas usar un mensaje de bienvenida diferente.
welcome_message_caps false Asígnale el valor true para que el mensaje de bienvenida se muestre en mayúsculas.

Después de configurar tu proyecto, ejecuta la guía de inicio rápido de muestra para ver el mensaje de bienvenida que definiste en Firebase console. Puedes cambiar los valores de estos parámetros en el proyecto y luego presionar Obtener Remote Config en la guía para ver cómo Remote Config te permite actualizar una app.

Compila y ejecuta la guía de inicio rápido de muestra

  1. Descarga el código de la guía de inicio rápido de muestra y descomprímelo.
  2. Abre Android Studio.
  3. Selecciona Archivo > Abrir, ve a la ubicación donde extrajiste el código de muestra y abre la carpeta Configuración.
  4. Compila y ejecuta la muestra.

Cómo funciona

Primero, la muestra obtiene una instancia de objeto de Remote Config y habilita el modo de desarrollador, que permite actualizar la memoria caché con frecuencia:

Java
Android

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setDeveloperModeEnabled(BuildConfig.DEBUG)
        .build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);

Kotlin
Android

remoteConfig = FirebaseRemoteConfig.getInstance()
val configSettings = FirebaseRemoteConfigSettings.Builder()
        .setDeveloperModeEnabled(BuildConfig.DEBUG)
        .build()
remoteConfig.setConfigSettings(configSettings)

Después, la muestra configura los valores predeterminados en la app desde un archivo XML:

Java
Android

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

Kotlin
Android

remoteConfig.setDefaults(R.xml.remote_config_defaults)

Ahora, la muestra crea una solicitud fetch() para recuperar valores desde el servidor de Remote Config y llama a activateFetched() a fin de poner esos valores a disposición de la app:

Java
Android

// cacheExpirationSeconds is set to cacheExpiration here, indicating the next fetch request
// will use fetch data from the Remote Config service, rather than cached parameter values,
// if cached parameter values are more than cacheExpiration seconds old.
// See Best Practices in the README for more information.
mFirebaseRemoteConfig.fetch(cacheExpiration)
        .addOnCompleteListener(this, new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Toast.makeText(MainActivity.this, "Fetch Succeeded",
                            Toast.LENGTH_SHORT).show();

                    // After config data is successfully fetched, it must be activated before newly fetched
                    // values are returned.
                    mFirebaseRemoteConfig.activateFetched();
                } else {
                    Toast.makeText(MainActivity.this, "Fetch Failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

Kotlin
Android

// cacheExpirationSeconds is set to cacheExpiration here, indicating the next fetch request
// will use fetch data from the Remote Config service, rather than cached parameter values,
// if cached parameter values are more than cacheExpiration seconds old.
// See Best Practices in the README for more information.
remoteConfig.fetch(cacheExpiration)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                Toast.makeText(this, "Fetch Succeeded",
                        Toast.LENGTH_SHORT).show()

                // After config data is successfully fetched, it must be activated before newly fetched
                // values are returned.
                remoteConfig.activateFetched()
            } else {
                Toast.makeText(this, "Fetch Failed",
                        Toast.LENGTH_SHORT).show()
            }
            displayWelcomeMessage()
        }

Para acceder a tus valores de configuración, llama a uno de los métodos get<type> disponibles (por ejemplo, getLong) en el objeto FirebaseRemoteConfig que se pasó a la devolución de llamada.

Ahora que se actualizó el mensaje de bienvenida, puedes mostrarlo actualizado en la app:

Java
Android

private void displayWelcomeMessage() {
    String welcomeMessage = mFirebaseRemoteConfig.getString(WELCOME_MESSAGE_KEY);
    if (mFirebaseRemoteConfig.getBoolean(WELCOME_MESSAGE_CAPS_KEY)) {
        mWelcomeTextView.setAllCaps(true);
    } else {
        mWelcomeTextView.setAllCaps(false);
    }
    mWelcomeTextView.setText(welcomeMessage);
}

Kotlin
Android

private fun displayWelcomeMessage() {
    val welcomeMessage = remoteConfig.getString(WELCOME_MESSAGE_KEY)
    welcomeTextView.isAllCaps = remoteConfig.getBoolean(WELCOME_MESSAGE_CAPS_KEY)
    welcomeTextView.text = welcomeMessage
}

companion object {

    private const val TAG = "MainActivity"

    // Remote Config keys
    private const val LOADING_PHRASE_CONFIG_KEY = "loading_phrase"
    private const val WELCOME_MESSAGE_KEY = "welcome_message"
    private const val WELCOME_MESSAGE_CAPS_KEY = "welcome_message_caps"
}

Almacenamiento en caché y regulación

Remote Config almacena valores en caché de forma local después de la primera recuperación correcta. Según la configuración predeterminada, la memoria caché vence después de 12 horas. Si deseas cambiar el vencimiento de la memoria caché para una recuperación en particular, pasa el período de vencimiento de la memoria caché al método fetch. Si los valores de la memoria caché son más antiguos que el vencimiento deseado de la memoria caché, Remote Config solicitará valores de configuración actualizados desde el servicio. Si tu app solicita valores actualizados mediante fetch varias veces, se regulan las solicitudes y tu app recibe valores almacenados en caché.

Durante el desarrollo de la app, te recomendamos actualizar la memoria caché con mucha frecuencia (varias veces por hora) para que puedas iterar mientras desarrollas y pruebas tu app. Para permitir la iteración rápida en un proyecto con hasta 10 desarrolladores, puedes agregar temporalmente a tu app un objeto FirebaseRemoteConfigSettings con el valor true en isDeveloperModeEnabled y cambiar la configuración de almacenamiento en caché del objeto FirebaseRemoteConfig.

Próximos pasos

Después de que pruebes la muestra de inicio rápido y conozcas el funcionamiento de la API, puedes revisar temas avanzados de Remote Config, como propagar actualizaciones de Remote Config en tiempo real y cómo usar la API de REST. Consulta estos recursos:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.