Ir para o console

Instruções do aplicativo de amostra do Configuração remota do Firebase para Android

Este guia apresenta as etapas necessárias para integrar o Configuração remota ao seu app do Android. Para saber mais sobre a API do Configuração remota para Android, consulte com.google.firebase.remoteconfig.

Requisitos

Configure o projeto usando as instruções fornecidas em Como adicionar o Firebase ao seu projeto do Android.

Depois, adicione a seguinte dependência ao build.gradle do módulo do app:

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

Criar um projeto do Configuração remota para a amostra de início rápido

Esse exemplo de início rápido mostra como usar o Configuração remota para definir a mensagem de boas-vindas do app de amostra. Antes de executá-lo, configure um projeto do Configuração remota.

No Console do Firebase, clique em Criar novo projeto e siga as instruções para Configurar um projeto do Configuração remota do Firebase com os parâmetros a seguir:

Chave do parâmetro Valor padrão Observações
welcome_message Welcome to this sample app Altere para usar uma mensagem diferente de boas-vindas.
welcome_message_caps false Defina como true para que a mensagem de boas-vindas seja exibida em maiúsculas.

Depois de configurar o projeto, execute a amostra de início rápido para ver a mensagem de boas-vindas definida no Console do Firebase. Altere os valores dos parâmetros no projeto e toque em Buscar Configuração remota nessa amostra para ver como ele funciona para atualizar um app.

Criar e executar a amostra de início rápido

  1. Faça o download do exemplo de início rápido e descompacte o arquivo zip.
  2. Abra o Android Studio.
  3. Selecione Arquivo > Abrir, navegue até o local onde você extraiu o exemplo de código e abra a pasta Config.
  4. Crie e execute o exemplo.

Como funciona

Primeiro, a amostra recebe uma instância de objeto do Configuração Remota e define o intervalo mínimo de busca para permitir atualizações frequentes:

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)

Em seguida, um arquivo XML é utilizado para definir os valores padrão do app:

Java

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

Kotlin

remoteConfig.setDefaults(R.xml.remote_config_defaults)

Nesse momento, o exemplo cria uma solicitação fetchAndActivate() para recuperar os valores de back-end do Configuração remota e disponibilizá-los para o aplicativo:

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

No objeto FirebaseRemoteConfig transmitido para o retorno de chamada, acesse os valores de configuração chamando um dos métodos get<type> disponíveis, como getLong.

Agora que a mensagem de boas-vindas foi atualizada, exiba-a no 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"
}

Controle de fluxo

Se um aplicativo fizer buscar muitas vezes em um curto período de tempo, essas chamadas de busca podem ser controladas. Nesses casos, o SDK retorna FirebaseRemoteConfigFetchThrottledException.

Durante o desenvolvimento de aplicativos, talvez seja necessário buscar e ativar configurações com muita frequência (muitas vezes por hora) para permitir a rápida iteração conforme desenvolve e testa seu aplicativo. Para acomodar a iteração rápida em um projeto com até 10 desenvolvedores, é possível adicionar temporariamente um objeto FirebaseRemoteConfigSettings com um baixo intervalo mínimo de busca (setMinimumFetchIntervalInSeconds) no seu app.

O intervalo de busca mínimo padrão do Configuração remota é de 12 horas, o que significa que a busca pelas configurações no back-end não acontecerá mais de uma vez em uma janela de 12 horas, independentemente de quantas chamadas de busca forem realmente realizadas. O intervalo mínimo de busca é determinado especificamente na seguinte ordem:

  1. O parâmetro em fetch(long)
  2. O parâmetro em FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. O valor padrão de 12 horas

Para definir o intervalo mínimo de busca para um valor personalizado, use FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long).

Próximas etapas

Depois de conhecer a amostra do guia de início rápido e entender como a API funciona, você pode revisar os tópicos avançados do Configuração remota, como Propagar atualizações do Configuração remota em tempo real e o uso da API REST. Veja estes recursos: