Modelos e controle de versão do Configuração remota

O modelo do Configuração remota é o conjunto do servidor dos parâmetros e condições formatados em JSON que você criou para seu projeto do Firebase. É possível modificar e gerenciar o modelo usando o Console do Firebase, que exibe o conteúdo do modelo em formato de gráfico nas guias Parâmetros e Condições. Se você estiver usando a API REST para modificar e gerenciar sua configuração, trabalhará diretamente com um arquivo de modelo como este exemplo remote-config.json:

{
  "parameters":[
    {
      "key":"welcome_message",
      "value_options":[
        {
          "value":"Welcome to this sample app"
        }
      ]
    },
    {
      "key":"welcome_message_caps",
      "value_options":[
        {
          "value":"false"
        }
      ]
    }
  ],
  "version":{
    "version_number": "42",
    "update_time":"2018-05-11T18:46:40Z",
    "update_user":{
      "name":"Jane Developer",
      "email":"jane@developer.org",
      "imageUrl":"http://image.google.com/path-to-profile-photo-for-jane"
    },
    "description":"Adding welcome messages",
    "origin":"CONSOLE",
    "update_type":"INCREMENTAL_UPDATE"
  }
}

Sempre que os parâmetros são atualizados, o Configuração remota cria um novo modelo com controle de versão e armazena o anterior como uma versão que você pode recuperar ou reverter conforme necessário. Os números de versão são aumentados sequencialmente a partir do valor inicial armazenado pelo Configuração remota. Todos os modelos incluem um campo version conforme mostrado. Ele contém metadados sobre essa versão específica.

Com o Console do Firebase ou a API REST, você pode executar as seguintes tarefas de gerenciamento de versão:

  • Listar todas as versões de modelos armazenadas.
  • Recuperar uma versão específica.
  • Reverter para uma versão específica.

Ao gerenciar os modelos do Configuração remota, não se esqueça do limite de expiração: 90 dias a partir do momento da criação ou um limite total de 300 versões armazenadas. Se você quiser armazenar ou reverter para um modelo que excede esses limites, salve-o e faça o armazenamento manualmente. O modelo ativo do Configuração remota em uso pelo app não expira. No entanto, se esse modelo estiver ativo por mais de 90 dias desde a criação e for substituído por uma atualização, ele não poderá ser recuperado novamente devido à expiração.

Gerenciar versões de modelos do Configuração remota com o Console do Firebase

O Console do Firebase apresenta uma interface gráfica para ativar versões de modelo de listagem, visualizar os detalhes e fazer reversões conforme necessário. Para executar essas tarefas, siga as etapas a seguir:

  1. Na guia Parâmetros, selecione o ícone de relógio exibido no canto superior direito. Isso abrirá a página Histórico de alterações com a lista de todas as versões de modelos armazenadas em um menu em lista à direita.

  2. Por padrão, o painel de detalhes exibe o modelo ativo atualmente. Para ver detalhes de outra versão na lista, selecione-a no menu à direita.

    Os detalhes exibidos para cada versão armazenada informam se a alteração foi feita por meio do Console, da API REST ou de uma reversão ou se foram alterações incrementais devido a um salvamento forçado do modelo.

  3. Para visualizar uma comparação detalhada entre a versão selecionada e qualquer outra versão armazenada, passe o cursor sobre o menu de contexto de qualquer versão não selecionada e clique em Comparar com a versão selecionada.

  4. Para as versões de modelo anteriores qualificadas para reversão, um botão com a opção de reverter para essa versão é exibido no canto superior direito da página. Clique e confirme essa opção apenas se tiver certeza de que você quer reverter para essa versão e usar esses valores imediatamente para todos os apps e usuários.

Gerenciar versões do modelo do Configuração remota com a API REST

Veja nesta seção como gerenciar versões do modelo do Configuração remota usando a API REST. Para mais detalhes sobre como criar, modificar e salvar modelos de maneira programática, consulte Como usar a API REST do Configuração remota.

Listar todas as versões armazenadas do modelo do Configuração remota

Com o método HTTP personalizado :listVersions, é possível recuperar uma lista de versões armazenadas do modelo do Configuração remota. Exemplo:

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id:listVersions

A resposta inclui metadados de todas as versões armazenadas, incluindo a hora da atualização, o usuário que as criou e se elas foram feitas por meio do console ou da API REST. Veja um exemplo de um elemento de versão:

{
  "versions": [{
    "version_number": "6",
    "update_time": "2018-05-12T02:38:54Z",
    "update_user": {
      "email": "jane@developer.org",
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

Recuperar uma versão específica do modelo do Configuração remota

Ao anexar o parâmetro de URL ?version_number, você recupera qualquer versão armazenada do modelo do Configuração remota. Exemplo:

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?version_number=6

Este parâmetro é válido apenas para operações GET. Não é possível usá-lo para especificar números de versão para atualizações. Uma solicitação get semelhante sem o parâmetro ?version_number recuperaria o modelo ativo atual, conforme descrito em Receber JSON do back-end do Configuração remota.

Reverter para uma versão específica armazenada do modelo do Configuração remota

Se você quiser reverter para um modelo armazenado do Configuração remota, emita uma solicitação HTTP POST com o método personalizado :rollback e, no corpo da solicitação, a versão específica a ser aplicada. Exemplo:

curl --compressed -D headers -H "Authorization: Bearer token" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:rollback -d '{"version_number": 6}'

A resposta apresenta o conteúdo do modelo armazenado que está ativo atualmente com os novos metadados de versão.

Essa operação de reversão cria uma nova versão numerada com eficiência. Por exemplo, a reversão da versão 10 para a versão 6 cria com eficiência uma nova cópia da versão 6, que é diferente do original apenas porque o número de versão é 11. A versão 6 original ainda é armazenada, caso não tenha atingido a expiração, e a versão 11 se torna o modelo ativo.