Ir a la consola

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:18.0.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, luego, 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 de 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 configura el intervalo de recuperación mínimo, que permite realizar actualizaciones frecuentes:

Java

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

Kotlin

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

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

Java

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

Kotlin

remoteConfig.setDefaults(R.xml.remote_config_defaults)

Ahora la muestra crea una solicitud fetchAndActivate() a fin de recuperar valores desde el backend de Remote Config y hacer que estén disponibles para la app:

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

Kotlin

remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.getResult()
                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()
        }

Para acceder a los 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

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

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

Regulación

Si una app realiza recuperaciones muchas veces en poco tiempo, es posible que se regulen las llamadas de recuperación. En estos casos, el SDK muestra FirebaseRemoteConfigFetchThrottledException.

Durante el desarrollo de la app, te recomendamos recuperar y activar la configuración con mucha frecuencia (varias veces por hora) para que puedas iterar con rapidez mientras desarrollas y pruebas tu app. Para permitir iteraciones rápidas en un proyecto que cuenta con un máximo de 10 desarrolladores, puedes configurar de manera temporal un objeto FirebaseRemoteConfigSettings con un intervalo de recuperación mínimo (setMinimumFetchIntervalInSeconds) en tu app.

Según la configuración predeterminada, el intervalo de recuperación mínimo de Remote Config es de 12 horas, lo que significa que las configuraciones se recuperarán desde el backend solo una vez cada 12 horas, sin importar cuántas llamadas se realicen. Específicamente, el intervalo de recuperación mínimo se determina en el siguiente orden:

  1. El parámetro de fetch(long)
  2. El parámetro de FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. El valor predeterminado de 12 horas

Si quieres establecer un valor personalizado para el intervalo de recuperación, usa FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long).

Pasos siguientes

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: