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:16.3.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, uma instância de objeto do Configuração remota é recebida, e o modo de desenvolvedor é ativado no exemplo para que o cache seja sempre atualizado:

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)

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

Java
Android

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

Kotlin
Android

remoteConfig.setDefaults(R.xml.remote_config_defaults)

Uma solicitação fetch() é criada para buscar valores do servidor do Configuração remota e activateFetched() é chamado para disponibilizá-los ao 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()
        }

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

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

Armazenar em cache e controlar o fluxo

O Configuração remota armazena os valores no local após a primeira busca bem-sucedida. Por padrão, o cache expira depois de 12 horas, mas você pode alterar esse tempo em uma busca específica. Basta informar o período de vencimento para o método fetch. Caso os valores no cache sejam anteriores à expiração, o Configuração remota solicita valores atualizados de configuração do serviço. Se o app solicita atualizações dos valores várias vezes com o fetch, elas são limitadas e ele passa a receber valores armazenados em cache.

Durante a fase de desenvolvimento e teste do app, atualize o cache várias vezes por hora para uma iteração rápida. Para acomodar a iteração rápida em um projeto com até 10 desenvolvedores, adicione temporariamente ao aplicativo um objeto FirebaseRemoteConfigSettings com isDeveloperModeEnabled configurado como true, alterando as configurações de armazenamento em cache do objeto FirebaseRemoteConfig.

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:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.