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


Use Firebase Remote Config 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. Confira neste guia noções básicas e exemplos de código, que estão disponíveis para clonagem ou download no repositório do GitHub firebase/quickstart-js.

Etapa 1: adicionar e inicializar o SDK de Remote Config

  1. Instale o SDK do Firebase para JavaScript e inicialize o Firebase, caso ainda não tenha feito isso.

  2. Adicione o SDK do Remote Config para JavaScript e inicialize o Remote Config:

Web

import { initializeApp } from "firebase/app";
import { getRemoteConfig } from "firebase/remote-config";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Remote Config and get a reference to the service
const remoteConfig = getRemoteConfig(app);

Web

import firebase from "firebase/compat/app";
import "firebase/compat/remote-config";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Remote Config and get a reference to the service
const remoteConfig = firebase.remoteConfig();

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

Etapa 2: definir o intervalo mínimo de busca

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

Web

remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

Web

remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

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

É possível definir os valores de parâmetro padrão no app por meio do objeto de Remote Config. Assim, o app se comporta de maneira previsível antes de se conectar ao back-end de Remote Config e os valores padrão ficam disponíveis, caso nenhum tenha sido definido no back-end.

Web

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

Web

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

Depois de configurar os valores de parâmetro do back-end de Remote Config, faça o download de um arquivo JSON gerado com todos os valores padrão e salve esse arquivo no pacote do app:

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=JSON -o remote_config_defaults.json

Console do Firebase

  1. Na guia Parâmetros, abra o Menu e selecione Fazer o download dos valores padrão.
  2. Quando for solicitado, ative a opção .json para a Web e clique em Fazer o download do arquivo.

Os exemplos a seguir mostram duas maneiras de importar e definir valores padrão no app. O primeiro exemplo usa fetch, que faz uma solicitação HTTP para o arquivo padrão incluído no pacote de app:

  const rcDefaultsFile = await fetch('remote_config_defaults.json');
  const rcDefaultsJson = await rcDefaultsFile.json();
  remoteConfig.defaultConfig = rcDefaultsJson;
  

O outro exemplo usa require, que compila os valores no seu app no tempo de compilação:

  let rcDefaults = require('./remote_config_defaults.json');
  remoteConfig.defaultConfig = rcDefaults;

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

Agora você pode receber valores de parâmetro do objeto de Remote Config. Se posteriormente você definir valores no back-end, buscá-los e ativá-los, eles estarão disponíveis para o app. Para acessar esses valores, chame o método getValue(), fornecendo a chave de parâmetro como um argumento.

Web

import { getValue } from "firebase/remote-config";

const val = getValue(remoteConfig, "welcome_messsage");

Web

const val = remoteConfig.getValue("welcome_messsage");

Etapa 5: definir valores de parâmetros

Com o console de Firebase ou as APIs de back-end de Remote Config, é possível criar valores padrão do lado do servidor que substituem os valores no app de acordo com a lógica condicional ou a segmentação de usuário pretendidas. Nesta seção, confira as etapas a serem seguidas no console de Firebase para criar esses valores.

  1. Abra o projeto no console de Firebase.
  2. Selecione Remote Config no menu para acessar o painel de Remote Config.
  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 possivelmente substituirá o valor padrão no app) e também valores condicionais. Saiba mais em Parâmetros e condições de Remote Config.

Etapa 6: buscar e ativar os valores

  1. Para buscar os valores de parâmetro do back-end de Remote Config, chame o método fetchConfig(). Todos os valores definidos no back-end são buscados e armazenados em cache no objeto de Remote Config.
  2. Para disponibilizar valores de parâmetro buscados ao seu app, chame o método activate().

Para casos em que você quer buscar e ativar valores em uma chamada, use fetchAndActivate() conforme mostrado neste exemplo:

Web

import { fetchAndActivate } from "firebase/remote-config";

fetchAndActivate(remoteConfig)
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

Web

remoteConfig.fetchAndActivate()
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

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.

Limitação

Se um aplicativo fizer buscas muitas vezes em um período curto, essas chamadas de busca podem ser limitadas. Nesses casos, o SDK lança um erro FETCH_THROTTLE. Recomendamos que você reconheça esse erro e tente novamente no modo de espera exponencial, aguardando intervalos mais longos entre as solicitações de busca subsequentes.

Durante o desenvolvimento de apps, convém atualizar o cache 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 vários desenvolvedores, você pode adicionar temporariamente uma propriedade com um intervalo mínimo de busca baixo (Settings.minimumFetchIntervalMillis) no seu app.

O intervalo de busca de produção padrão e recomendado para Remote Config é de 12 horas, o que significa que a busca pelas configurações no back-end não acontecerá mais de uma vez em um período 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 Settings.minimumFetchIntervalMillis.
  2. O valor padrão de 12 horas.

Próximas etapas

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