Ir para o console

Primeiros passos com o Configuração remota do Firebase no Android

Use o Configuração remota do Firebase para definir parâmetros no seu app e atualizar os valores na nuvem, permitindo modificar a aparência e o comportamento do app sem a necessidade de distribuir uma atualização. Veja neste guia as etapas para os primeiros passos e códigos de amostra, que estão disponíveis para clonagem ou download no repositório do GitHub firebase/quickstart-android.

Adicionar o Firebase ao app

  1. Adicione o Firebase ao projeto para Android, caso ainda não tenha feito isso.

    Ao instalar o SDK do Android, você tem a opção de adicionar a dependência do Google Analytics. O Google Analytics é obrigatório para a segmentação condicional de instâncias de apps do Configuração remota para propriedades do usuário, públicos-alvo e o Firebase Previsões.

Receber o objeto singleton do Configuração remota

Receba uma instância de objeto do Configuração remota e defina o intervalo mínimo de busca para permitir atualizações frequentes:

Java

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

Kotlin

remoteConfig = FirebaseRemoteConfig.getInstance()val configSettings = FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build()
remoteConfig.setConfigSettingsAsync(configSettings)

O objeto singleton é usado para armazenar valores de parâmetro padrão no aplicativo, recuperar valores de parâmetro atualizados do serviço e controlar quando eles são disponibilizados no aplicativo.

Durante o desenvolvimento, recomendamos definir um intervalo de busca mínimo relativamente baixo. Para mais informações, consulte Limitação.

Definir valores de parâmetros padrão no app

É possível definir os valores de parâmetros padrão no app por meio do objeto do Configuração remota. Assim, o app se comporta de maneira previsível antes de se conectar ao serviço do Configuração remota e os valores padrão estarão disponíveis, caso nenhum tenha sido definido no serviço.

  1. Defina um conjunto de valores padrão e nomes de parâmetro usando um objeto Map ou um arquivo de recursos XML (ambos em inglês) armazenado na pasta res/xml do app. O app de amostra no guia de início rápido do Configuração remota usa um arquivo XML para definir valores e nomes de parâmetros padrão.
  2. Adicione esses valores ao objeto do Configuração remota usando setDefaultsAsync(int), como mostrado abaixo:

Java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

Kotlin

remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

Receber valores de parâmetro para uso no app

É possível receber valores de parâmetros do objeto da Configuração remota. Se você definir valores no serviço do Configuração remota, buscá-los e, depois, ativá-los, eles estarão disponíveis para seu app. Caso contrário, você receberá os valores no app configurados usando setDefaultsAsync(int). Para ter esses valores, chame o método listado a seguir que está atribuído ao tipo de dado esperado pelo app, fornecendo a chave de parâmetro como argumento:

Definir valores de parâmetro no serviço

Por meio do Console do Firebase ou da API REST do Configuração remota, é possível criar novos valores padrão do serviço que substituem os valores no app de acordo com a lógica condicional ou a segmentação por usuário desejadas. Veja nesta seção as etapas do Console do Firebase para criar esses valores.

  1. Abra seu projeto no Console do Firebase.
  2. Selecione Configuração remota no menu para ver o painel do recurso.
  3. Defina os parâmetros com os mesmos nomes dos definidos no seu app. Para cada um, é possível definir um valor padrão (que, por fim, substituirá o valor padrão no app correspondente), assim como valores condicionais. Para saber mais, consulte Parâmetros e condições do Configuração remota.

Buscar e ativar valores do serviço

  1. Para recuperar parameter values a partir do serviço Configuração remota, chame o método fetch(). Todos os valores definidos nesse serviço são recuperados e armazenados no objeto do Configuração remota.
  2. Para disponibilizar os valores de parâmetros recuperados ao aplicativo, chame o método activate().

    Se você quiser buscar e ativar valores em uma chamada, use uma solicitação fetchAndActivate() para buscar valores de back-end do Configuração remota e disponibilizá-los para o 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()
            }

Como esses valores de parâmetro atualizados afetam o comportamento e a aparência do app, ative-os quando isso não prejudicar a experiência do usuário (por exemplo, na próxima vez em que ele abrir o app). Consulte Estratégias de carregamento do Configuração remota para mais informações e exemplos.

Limitação

Se um aplicativo fizer muitas buscas em um curto período, as chamadas de busca serão limitadas e o SDK retornará FirebaseRemoteConfigFetchThrottledException. Antes da versão 17.0.0 do SDK, o limite era de cinco solicitações de busca em um intervalo de 60 minutos (as versões mais recentes têm limites mais permissivos).

Durante o desenvolvimento de apps, convém buscar e ativar configurações com muita frequência (muitas vezes por hora) para permitir a iteração rápida à medida que você desenvolve e testa seu app. Para possibilitar a iteração rápida em um projeto com até 10 desenvolvedores, adicione temporariamente um objeto FirebaseRemoteConfigSettings com um intervalo mínimo de busca baixo (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

Se ainda não tiver feito isso, veja os casos de uso do Configuração remota e analise alguns dos principais conceitos e documentação de estratégias avançadas, incluindo: