Estratégias de carregamento da Configuração remota do Firebase

A Configuração remota do Firebase oferece muita flexibilidade sobre como e quando buscar novos valores do servidor e ativá-los no seu app. Isso permite que você tenha uma experiência do usuário final de qualidade ao controlar o tempo das alterações de configuração visíveis. É possível buscar novos valores na inicialização do aplicativo com fetchAndActivate() e usar a Configuração remota em tempo real como método complementar para buscar automaticamente os valores de parâmetro mais recentes após a publicação de uma nova versão desse recurso.

Neste guia, vamos analisar algumas estratégias de carregamento e discutir as principais considerações na hora de escolher a melhor opção para seu app.

Estratégia 1: buscar e ativar no carregamento

Nesta estratégia, seu app chamaria fetchAndActivate() quando ele for inicializado pela primeira vez para buscar novos valores da Configuração remota e ativá-los assim que o carregamento estiver concluído. Essa abordagem simples funciona bem para alterações de configuração que não causam alterações visuais significativas na IU. Ela precisa ser evitada em qualquer situação em que sua IU possa mudar de forma perceptível enquanto os usuários estiverem usando.

Depois que o app chamar fetchAndActivate(), ele poderá começar a detectar atualizações de valores de parâmetro em tempo real chamando addOnConfigUpdateListener. Esse método começa a detectar atualizações do lado do servidor para valores de parâmetro, busca essas informações automaticamente e chama o listener. Uma estratégia simples é ativar os novos valores no listener. No entanto, como mencionado para fetchAndActivate(), evite essa ativação imediata nas interfaces confidenciais.

Estratégia 2: ativar por trás da tela de carregamento

Uma solução para o possível problema da IU encontrado na estratégia 1 seria usar uma tela de carregamento. Em vez de iniciar seu app imediatamente, exiba uma tela de carregamento e chame fetchAndActivate no seu gerenciador de conclusão. Depois disso, use novamente um retorno de chamada ou uma notificação. Dispense a tela de carregamento e permita que o usuário comece a interagir com o app.

Caso você use essa estratégia, recomendamos incluir um tempo limite à tela de carregamento. O tempo limite de um minuto da Configuração remota pode ser muito longo para uma experiência de inicialização do app de qualidade para os usuários.

Detectar as atualizações da Configuração remota em tempo real chamando addOnConfigUpdateListener funciona bem com essa estratégia. Adicione o listener quando a tela de carregamento aparecer e use activate() em um ou mais pontos no app em que os valores da Configuração remota não causem mudanças significativas na aparência.

Estratégia 3: carregar novos valores para a próxima inicialização

Uma estratégia eficaz seria carregar novos valores de configuração para serem ativados na próxima inicialização do seu app. Nessa estratégia, seu app ativa os valores buscados na inicialização antes de tentar buscar novos valores. Isso pressupõe que ele já tenha feito a busca antes, mas os valores ainda não foram ativados. Veja abaixo a ordem de operações para essa estratégia:

  1. Na inicialização, ative imediatamente os valores buscados. Isso aplica, quase instantaneamente, todos os valores salvos do servidor em uma sessão anterior.
  2. Enquanto o usuário interage com o app, inicie uma chamada assíncrona para buscar novos valores de acordo com o intervalo mínimo de busca padrão e adicionar um listener de atualização da configuração em tempo real. Ele vai buscar automaticamente todos os valores publicados no servidor enquanto o app estiver em execução. As atualizações em tempo real ignoram a configuração do intervalo mínimo de busca.
  3. Nenhuma ação é necessária no callback ou no gerenciador de conclusão da chamada de busca. Seu app manterá os valores salvos até que você os ative na próxima vez que ele for iniciado.

Essa estratégia minimiza muito o tempo de espera do usuário. Combinar as estratégias de busca e listener em tempo real com chamadas activate() conforme necessário no ciclo de vida do app garante que os usuários tenham os valores mais recentes da Configuração remota à medida que interagem com ele.

Estratégias de carregamento a serem evitadas

Como você pôde perceber na discussão acima sobre as vantagens e desvantagens do carregamento, há alguns padrões de uso a serem evitados.

  • Não atualize ou altere aspectos da IU enquanto o usuário estiver visualizando ou interagindo com ela, a menos que você tenha fortes motivos comerciais ou relacionados ao app, como remover opções referentes a uma promoção que acabou de ser encerrada.
  • Não envie números em massa de solicitações de busca simultâneas, porque isso pode resultar na limitação do app pelo servidor. Se você precisa buscar atualizações com frequência, use a Configuração remota em tempo real. Embora o risco de limitação seja baixo na maioria dos cenários de produção, isso pode ser um problema durante o desenvolvimento ativo. A Configuração remota em tempo real foi projetada para esse caso de uso. Confira as orientações de limitação.
  • Não dependa da conectividade de rede para receber os valores da Configuração remota. Defina os valores de parâmetro padrão no app para que ele sempre se comporte conforme esperado. É possível manter os valores padrão do back-end do app e da Configuração remota periodicamente em sincronia usando os padrões de modelo salvos.

Próximas etapas

Essas três estratégias básicas não compõem, de forma alguma, uma lista completa das maneiras de carregar valores de configuração. Dependendo das suas necessidades, é possível definir estratégias muito mais sofisticadas.

Confira a referência de API da sua plataforma e saiba mais sobre as chamadas específicas para buscar e ativar os valores de configuração.