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.

A biblioteca de Remote Config é usada 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. Saiba mais em Estratégias de carregamento da Configuração remota.

Etapa 1: adicionar o Firebase ao app

Antes de usar o Remote Config, você precisa:

  • Registrar seu projeto em C++ e configurá-lo para usar o Firebase.

    Se o projeto em C++ já usa o Firebase, então ele já está registrado e configurado para o Firebase.

  • Adicione o SDK do Firebase para C++ ao seu projeto em C++.

Adicionar o Firebase ao projeto em C++ envolve tarefas no console do Firebase e no projeto em C++ aberto (por exemplo, fazer o download dos arquivos de configuração do Firebase pelo console e movê-los para o projeto em C++).

Etapa 2: adicionar o Remote Config ao app

Android

Depois de adicionar o Firebase ao app:

  1. Crie um app Firebase, transmitindo o ambiente JNI e a atividade:

    app = ::firebase::App::Create(::firebase::AppOptions(), jni_env, activity);

  2. Inicialize a biblioteca de Remote Config, conforme mostrado:

    ::firebase::remote_config::Initialize(app);

iOS+

Depois de adicionar o Firebase ao app:

  1. Crie um app Firebase:

    app = ::firebase::App::Create(::firebase::AppOptions());

  2. Inicialize a biblioteca de Remote Config, conforme mostrado:

    ::firebase::remote_config::Initialize(app);

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.

  1. Defina um conjunto de valores de parâmetro padrão e nomes de parâmetro usando um objeto ConfigKeyValue* ou um objeto ConfigKeyValueVariant* com o tamanho da matriz.

    Depois de configurar os valores de parâmetro do back-end de Remote Config, faça o download de um arquivo com esses pares de chave-valor para criar o objeto map. Para mais informações, consulte Fazer o download dos padrões de modelo de Remote Config.

  2. Adicione esses valores ao objeto de Remote Config usando SetDefaults().

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 você definir valores no back-end de Remote Config, buscá-los e ativá-los, eles vão estar disponíveis para o app. Caso contrário, você vai receber os valores de parâmetro configurados no app com SetDefaults().

Para ter esses valores, chame o método listado a seguir que está associado ao tipo de dado esperado pelo app, fornecendo a chave de parâmetro como argumento:

Etapa 5: definir valores de parâmetros

  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, por fim, substituirá o valor padrão no app) e 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 Fetch(). 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 ActivateFetched().

Etapa 7: detectar atualizações em tempo real

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

O SDK de C++ para Firebase v11.0.0 e mais recente para plataformas Android e Apple é compatível com atualizações em tempo real.

  1. No seu app, chame AddOnConfigUpdateListener para detectar atualizações e buscar novos valores de parâmetros automaticamente. O exemplo a seguir detecta atualizações e usa os valores recém-buscados quando Activate é chamado para mostrar uma mensagem de recepção atualizada.
remote_config->AddOnConfigUpdateListener(
    [](firebase::remote_config::ConfigUpdate&& config_update,
       firebase::remote_config::RemoteConfigError remote_config_error) {
      if (remote_config_error != firebase::remote_config::kRemoteConfigErrorNone) {
        printf("Error listening for config updates: %d", remote_config_error);
      }
      // Search the `updated_keys` set for the key "welcome_message."
      // `updated_keys` represents the keys that have changed since the last
      // fetch.
      if (std::find(config_update.updated_keys.begin(),
                    config_update.updated_keys.end(),
                    "welcome_message") != config_update.updated_keys.end()) {
        remote_config->Activate().OnCompletion(
            [&](const firebase::Future& completed_future,
               void* user_data) {
              // The key "welcome_message" was found within `updated_keys` and
              // can be activated.
              if (completed_future.error() == 0) {
                DisplayWelcomeMessage();
              } else {
                printf("Error activating config: %d", completed_future.error());
              }
            },
            nullptr);
      }
    });

Na próxima vez que você publicar uma nova versão de Remote Config, os dispositivos que estiverem executando o app e detectando alterações vão chamar o listener de atualização da configuração.

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: