Introdução à Configuração remota do Firebase


Use a Configuração remota do Firebase para definir parâmetros no app e atualizar os respectivos valores na nuvem. Assim, você modifica a aparência e o comportamento do app sem precisar distribuir uma atualização. Neste guia, você vai aprender as noções básicas com a ajuda de alguns exemplos de código.

Etapa 1: adicionar o Firebase e o SDK da Configuração remota ao app

  1. Instale e inicialize os SDKs do Firebase para Flutter, caso ainda não tenha feito isso.

  2. Na Configuração remota, o Google Analytics é necessário para a segmentação condicional de instâncias de apps para propriedades do usuário e públicos-alvo. Ative o Google Analytics no seu projeto.

  3. No diretório raiz do projeto do Flutter, execute o seguinte comando para instalar o plug-in de Configuração remota:

    flutter pub add firebase_remote_config
    

    Além disso, para fazer os ajustes da Configuração remota, você precisa adicionar o SDK do Firebase para Google Analytics ao seu app:

    flutter pub add firebase_analytics
    
  4. Recrie seu projeto:

    flutter run
    
  5. Se você estiver usando a Configuração remota no macOS, ative o Keychain Sharing no Xcode.

Etapa 2: conseguir o objeto Singleton da Configuração remota

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

final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: const Duration(hours: 1),
));

O objeto Singleton é usado para armazenar valores de parâmetro padrão no app, buscar valores de parâmetro atualizados no back-end e controlar quando eles são disponibilizados para o app.

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

Etapa 3: definir os valores de parâmetro padrão no app

Você pode definir os valores de parâmetro padrão no app no objeto da Configuração remota. Assim, o app se comporta de maneira previsível antes de se conectar ao back-end da Configuração remota, e os valores padrão vão estar disponíveis se nenhum tiver sido definido no back-end.

await remoteConfig.setDefaults(const {
    "example_param_1": 42,
    "example_param_2": 3.14159,
    "example_param_3": true,
    "example_param_4": "Hello, world!",
});

Etapa 4: receber valores de parâmetros para uso no app

Agora você pode receber valores de parâmetro do objeto da Configuração remota. Se você definir valores no back-end, buscá-los e ativá-los, eles vão estar disponíveis para o app. Caso contrário, você vai receber os valores configurados no app usando setDefaults().

Para isso, chame o método listado a seguir, que é associado ao tipo de dados esperado pelo app, fornecendo a chave de parâmetro como argumento:

  • getBool()
  • getDouble()
  • getInt()
  • getString()

Etapa 5: definir valores de parâmetro no back-end da Configuração remota

Usando o Console do Firebase ou as APIs de back-end da Configuração remota, você pode criar valores padrão do lado do servidor que substituem os valores no app conforme a lógica condicional ou a segmentação de usuário necessárias. Nesta seção, descrevemos 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 explorar o painel do recurso.
  3. Defina os parâmetros com nomes iguais aos que estão no app. Para cada um, você pode definir um valor padrão, que vai substituir o valor padrão correspondente no app, e valores condicionais. Saiba mais em Parâmetros e condições da Configuração remota.

Etapa 6: buscar e ativar os valores

  1. Para buscar os valores de parâmetro no back-end da Configuração remota, chame o método fetch(). Todos os valores definidos no back-end são buscados e armazenados no objeto da Configuração remota.

  2. Para disponibilizar esses valores de parâmetro recuperados ao app, chame o método activate().

    Se quiser buscar e ativar valores em uma chamada, use uma solicitação fetchAndActivate() para buscar valores no back-end da Configuração remota e disponibilizá-los para o app:

    await remoteConfig.fetchAndActivate();
    

Esses valores de parâmetro atualizados afetam o comportamento e a aparência do app. Por isso, ative-os sem prejudicar a experiência do usuário, como da próxima vez que ele abrir o app. Confira informações e exemplos em Estratégias de carregamento da Configuração remota.

Etapa 7: detectar atualizações em tempo real

Depois de buscar valores de parâmetros, é possível usar a Configuração remota em tempo real para detectar atualizações do back-end. A Configuração remota em tempo real sinaliza para dispositivos conectados quando atualizações estão disponíveis e busca mudanças automaticamente depois que você publica uma nova versão dela.

Observe que a Configuração remota em tempo real não está disponível para a Web.

  1. No app, use onConfigUpdated para detectar atualizações e buscar novos valores de parâmetros automaticamente.

     remoteConfig.onConfigUpdated.listen((event) async {
       await remoteConfig.activate();
    
       // Use the new config values here.
     });
    
  2. Na próxima vez que você publicar uma nova versão da Configuração remota, os dispositivos que executam seu app e detectam alterações vão ativar a nova configuração.

Limitação

Se um app fizer muitas buscas em um curto período, as chamadas de busca serão limitadas, e o valor da propriedade lastFetchStatus de FirebaseRemoteConfig vai ser RemoteConfigFetchStatus.throttle.

O intervalo de busca mínimo padrão da Configuração remota é de 12 horas. Portanto, a busca pelas configurações no back-end não vai acontecer mais de uma vez em 12 horas, e isso independe de quantas chamadas de busca forem realmente realizadas.

Durante o desenvolvimento de apps, se você não estiver usando a Configuração remota em tempo real (recomendado), busque e ative os configs mais frequentes (muitas vezes por hora) para permitir a iteração rápida ao desenvolver e testar seu app. Para acomodar a iteração rápida em um projeto com até 10 desenvolvedores, é possível definir temporariamente um intervalo de busca mínimo baixo com setConfigSettings().

final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: const Duration(minutes: 5),
));

Próximas etapas

Se ainda não tiver feito isso, confira os casos de uso da Configuração remota, bem como alguns dos conceitos principais e a documentação de estratégias avançadas, que incluem: