Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

Шаблоны удаленной конфигурации и управление версиями

Шаблон Remote Config - это серверный набор параметров и условий в формате JSON, которые вы создали для своего проекта Firebase. Вы можете изменять шаблон и управлять им с помощью консоли Firebase, которая отображает содержимое шаблона в графическом формате на вкладках « Параметры» и « Условия» . Вы также можете использовать серверные API Remote Config или интерфейс командной строки Firebase для изменения и управления конфигурацией.

Вот пример файла шаблона:

  {
    "conditions": [
      {
        "name": "ios",
        "expression": "device.os == 'ios'"
      }
    ],
    "parameters": {
      "welcome_message": {
        "defaultValue": {
          "value": "Welcome to this sample app"
        },
        "conditionalValues": {
          "ios": {
            "value": "Welcome to this sample iOS app"
          }
        }
      },
      "welcome_message_caps": {
        "defaultValue": {
          "value": "false"
        }
      },
      "header_text": {
        "defaultValue": {
          "useInAppDefault": true
        }
      }
    },
    "version": {
      "versionNumber": "28",
      "updateTime": "2020-05-14T18:39:38.994Z",
      "updateUser": {
        "email": "user@google.com"
      },
      "updateOrigin": "CONSOLE",
      "updateType": "INCREMENTAL_UPDATE"
    }
  }

Каждый раз, когда вы обновляете параметры, Remote Config создает новый шаблон Remote Config с версией и сохраняет предыдущий шаблон как версию, которую вы можете получить или откатиться к ней по мере необходимости. Номера версий последовательно увеличиваются от начального значения, сохраненного Remote Config. Все шаблоны включают поле version как показано, содержащее метаданные об этой конкретной версии.

С помощью консоли Firebase, Firebase CLI или серверных API Remote Config вы можете выполнять следующие задачи управления версиями:

  • Список всех сохраненных версий шаблона
  • Получить конкретную версию
  • Откатиться к конкретной версии

При управлении шаблонами Remote Config помните о пороге истечения срока действия: 90 дней с момента создания или общий лимит в 300 сохраненных версий. Если вы хотите сохранить или вернуться к шаблону за пределами этих ограничений, сохраните и сохраните его вручную. Срок действия текущего активного шаблона удаленной конфигурации, используемого вашим приложением, не истекает; однако, если он был активен более 90 дней с момента создания и заменен обновлением, его нельзя будет получить снова (из-за истечения срока действия).

Управление версиями шаблонов Remote Config

В этом разделе описывается, как управлять версиями вашего шаблона Remote Config. Дополнительные сведения о программном создании, изменении и сохранении шаблонов см. В разделе Программное изменение удаленной конфигурации .

Список всех сохраненных версий шаблона Remote Config

Вы можете получить список всех сохраненных версий шаблона Remote Config. Например:

Node.js

function listAllVersions() {
  admin.remoteConfig().listVersions()
    .then((listVersionsResult) => {
      console.log("Successfully fetched the list of versions");
      listVersionsResult.versions.forEach((version) => {
        console.log('version', JSON.stringify(version));
      });
    })
    .catch((error) => {
      console.log(error);
    });
}

Ява

ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
while (page != null) {
  for (Version version : page.getValues()) {
    System.out.println("Version: " + version.getVersionNumber());
  }
  page = page.getNextPage();
}

// Iterate through all versions. This will still retrieve versions in batches.
page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
for (Version version : page.iterateAll()) {
  System.out.println("Version: " + version.getVersionNumber());
}

ОТДЫХ

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

Консоль Firebase

На вкладке « Параметры » выберите значок «часы», отображаемый вверху справа. Откроется страница истории изменений со списком всех сохраненных версий шаблона в списке справа.

Подробности, отображаемые для каждой сохраненной версии, включают информацию о том, были ли изменения инициированы консолью, REST API, откатом или были инкрементными изменениями в результате принудительного сохранения шаблона.

Firebase CLI

firebase remoteconfig:versions:list

Используйте параметр --limit чтобы ограничить количество возвращаемых версий. Передайте «0», чтобы получить все версии.

Список шаблонов включает метаданные для всех сохраненных версий, включая время обновления, пользователя, который его сделал, и то, было ли оно выполнено через консоль или REST API. Вот пример элемента версии:

{
  "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"
  }]

Получить конкретную версию шаблона удаленной конфигурации

Вы можете получить любую конкретную сохраненную версию шаблона Remote Config. Например:

Node.js

Передайте getTemplate() без каких-либо аргументов, чтобы получить последнюю версию шаблона, или для получения конкретной версии используйте getTemplateAtVersion() .

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
  .then((template) => {
    console.log("Successfully fetched the template with ETag: " + template.etag);
  })
  .catch((error) => {
    console.log(error);
  });

Ява

Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get();
// See the ETag of the fetched template.
System.out.println("Successfully fetched the template with ETag: " + template.getETag());

ОТДЫХ

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

Параметр URL ?version_number действителен только для операций GET ; вы не можете использовать его для указания номеров версий для обновлений. Аналогичный запрос на получение без параметра ?version_number будет извлекать текущий активный шаблон.

Консоль Firebase

По умолчанию в области сведений на вкладке « История изменений » отображается текущий активный шаблон. Чтобы просмотреть сведения о другой версии в списке, выберите ее в правом меню.

Вы можете просмотреть подробные различия текущей выбранной версии и любой другой сохраненной версии, наведя курсор на контекстное меню любой невыбранной версии и выбрав Сравнить с выбранной версией.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

При желании вы можете записать вывод в указанный файл с помощью -o, FILENAME .

Возврат к определенной сохраненной версии шаблона удаленной конфигурации

Вы можете вернуться к любой сохраненной версии шаблона. Например:

Node.js

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

Ява

try {
  Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get();
  System.out.println("Successfully rolled back to template version: " + versionNumber);
  System.out.println("New ETag: " + template.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Error trying to rollback template.");
    System.out.println(rcError.getMessage());
  }
}

ОТДЫХ

Чтобы вернуться к сохраненному шаблону удаленной конфигурации, выполните HTTP POST с настраиваемым методом :rollback и в теле запроса укажите конкретную версию, которую нужно применить. Например:

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

Ответ содержит содержимое ныне активного сохраненного шаблона с его метаданными новой версии.

Консоль Firebase

Для предыдущих версий шаблона, для которых возможен откат, кнопка выбора для отката к этой версии отображается в правом верхнем углу страницы истории изменений . Щелкните и подтвердите это только в том случае, если вы уверены, что хотите вернуться к этой версии и немедленно использовать эти значения для всех приложений и пользователей.

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

Обратите внимание, что эта операция отката фактически создает новую пронумерованную версию. Например, откат от версии 10 к версии 6 эффективно создает новую копию версии 6, отличающуюся от оригинала только тем, что ее номер версии - 11. Исходная версия 6 все еще сохраняется, при условии, что срок ее действия еще не истек, и версия 11 становится активным шаблоном.