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
Instale e inicialize os SDKs do Firebase para Flutter, caso ainda não tenha feito isso.
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.
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
Recrie seu projeto:
flutter run
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.
- Abra seu projeto no Console do Firebase.
- Selecione Configuração remota no menu para explorar o painel do recurso.
- 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
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.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.
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. });
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: