Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

  {
    "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. Более подробно о том , как создавать, изменять и сохранять шаблоны программно, см Modify 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

Pass 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());
  }
}

ОТДЫХАТЬ

Откат к сохраненному удаленному шаблону Config, выдавать 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 становится активным шаблоном.