Как программно изменить Remote Config

Config templates using the Admin SDK, REST API, and Firebase CLI. page_type: guide

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

Используя REST API Remote Config, Admin SDKs или Firebase CLI, описанные в этом руководстве, вы можете не управлять шаблоном в консоли Firebase, а напрямую интегрировать изменения Remote Config в свои процессы. Например, с помощью API серверной части Remote Config вы можете:

  • Запланируйте Remote Config обновлений. Используя вызовы API в сочетании с заданием Cron, вы можете регулярно менять значения Remote Config.
  • Импортируйте значения конфигурации пакетами, чтобы быстро перейти с собственной системы на Firebase Remote Config.
  • Используйте Remote Config с Cloud Functions for Firebase, чтобы менять значения в приложении на основе событий, происходящих на стороне сервера. Например, вы можете использовать Remote Config для продвижения новой функции в приложении, а затем автоматически отключить это продвижение, как только обнаружите, что с новой функцией взаимодействовало достаточное количество людей.

Диаграмма, на которой показано, как серверная часть Remote Config взаимодействует со сторонними инструментами и серверами

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

Измените Remote Config с помощью Firebase Admin SDK

Admin SDK – это набор серверных библиотек, которые позволяют взаимодействовать с Firebase из сред с высоким уровнем доступа. Помимо обновления Remote Config, Admin SDK позволяет генерировать и проверять токены аутентификации Firebase, а также читать и записывать данные из Realtime Database. Чтобы узнать больше о требованиях и настройке Admin SDK, прочитайте статью Как добавить Firebase Admin SDK на сервер.

Чтобы посмотреть образец кода, который выполняет эти задачи с помощью Admin SDK, ознакомьтесь с одним из следующих приложений для быстрого старта:

Обычно при работе с Remote Config вы получаете текущий шаблон, изменяете некоторые параметры, группы параметров или условия, проверяете шаблон и публикуете его. Перед вызовом API необходимо авторизовать запросы из SDK.

Инициализация SDK и авторизация запросов к API

Если вы инициализируете Admin SDK без параметров, SDK использует стандартные учетные данные приложения Google и считывает параметры из переменной среды FIREBASE_CONFIG. Если содержимое переменной FIREBASE_CONFIG начинается с {, оно будет обработано как объект JSON. В противном случае SDK предполагает, что строка – это название файла JSON, содержащего настройки.

Пример:

Node.js

const admin = require('firebase-admin');
admin.initializeApp();

Java

FileInputStream serviceAccount = new FileInputStream("service-account.json");
FirebaseOptions options = FirebaseOptions.builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .build();
FirebaseApp.initializeApp(options);

Скачайте текущий шаблон Remote Config.

При работе с шаблонами Remote Config помните, что у них есть версии и каждая версия имеет ограниченный срок действия с момента ее создания до момента, когда вы замените ее обновлением: 90 дней, при этом общее ограничение составляет 300 сохраненных версий. Подробнее о шаблонах и версиях…

Вы можете использовать API серверной части, чтобы получить текущую активную версию шаблона Remote Config в формате JSON.

Параметры и значения параметров, созданные специально как варианты в эксперименте A/B Testing, не включаются в экспортируемые шаблоны.

Чтобы получить шаблон:

Node.js

function getTemplate() {
  var config = admin.remoteConfig();
  config.getTemplate()
      .then(function (template) {
        console.log('ETag from server: ' + template.etag);
        var templateStr = JSON.stringify(template);
        fs.writeFileSync('config.json', templateStr);
      })
      .catch(function (err) {
        console.error('Unable to get template');
        console.error(err);
      });
}

Java

Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get();
// See the ETag of the fetched template.
System.out.println("ETag from server: " + template.getETag());

Изменить Remote Config параметров

Вы можете программно изменять и добавлять параметры и группы параметров Remote Config. Например, в существующую группу параметров с названием new_menu можно добавить параметр, управляющий показом сезонной информации:

Node.js

function addParameterToGroup(template) {
  template.parameterGroups['new_menu'].parameters['spring_season'] = {
    defaultValue: {
      useInAppDefault: true
    },
    description: 'spring season menu visibility.',
  };
}

Java

template.getParameterGroups().get("new_menu").getParameters()
        .put("spring_season", new Parameter()
                .setDefaultValue(ParameterValue.inAppDefault())
                .setDescription("spring season menu visibility.")
        );

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

Изменить условия (Remote Config)

Вы можете программно изменять и добавлять условия Remote Config и условные значения. Например, чтобы добавить новое условие:

Node.js

function addNewCondition(template) {
  template.conditions.push({
    name: 'android_en',
    expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']',
    tagColor: 'BLUE',
  });
}

Java

template.getConditions().add(new Condition("android_en",
        "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));

В любом случае после внесения изменений шаблон необходимо опубликовать.

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

Проверка шаблона Remote Config

При желании вы можете проверить изменения перед публикацией, как показано ниже.

Node.js

function validateTemplate(template) {
  admin.remoteConfig().validateTemplate(template)
      .then(function (validatedTemplate) {
        // The template is valid and safe to use.
        console.log('Template was valid and safe to use');
      })
      .catch(function (err) {
        console.error('Template is invalid and cannot be published');
        console.error(err);
      });
}

Java

try {
  Template validatedTemplate = FirebaseRemoteConfig.getInstance()
          .validateTemplateAsync(template).get();
  System.out.println("Template was valid and safe to use");
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Template is invalid and cannot be published");
    System.out.println(rcError.getMessage());
  }
}

В ходе проверки выявляются такие ошибки, как повторяющиеся ключи для параметров и условий, недопустимые названия условий, несуществующие условия и неправильно отформатированные теги etag. Например, если в запросе содержится больше ключей, чем разрешено (2000), возвращается сообщение об ошибке Param count too large.

Как опубликовать шаблон Remote Config

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

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

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

  • Персонализации нельзя импортировать из одного проекта в другой.

    Например, если в вашем проекте включена персонализация, а вы скачали и отредактировали шаблон, то сможете опубликовать его в том же проекте. Однако вы не сможете опубликовать его в другом проекте, пока не удалите персонализацию из шаблона.

  • Условия можно импортировать из одного проекта в другой, но учтите, что все значения условий (например, идентификаторы приложений или аудитории) должны существовать в целевом проекте до публикации.

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

  • Если шаблон, который вы планируете опубликовать, содержит условия, зависящие от Google Analytics, в целевом проекте должен быть включен Analytics.

Node.js

function publishTemplate() {
  var config = admin.remoteConfig();
  var template = config.createTemplateFromJSON(
      fs.readFileSync('config.json', 'UTF8'));
  config.publishTemplate(template)
      .then(function (updatedTemplate) {
        console.log('Template has been published');
        console.log('ETag from server: ' + updatedTemplate.etag);
      })
      .catch(function (err) {
        console.error('Unable to publish template.');
        console.error(err);
      });
}

Java

try {
  Template publishedTemplate = FirebaseRemoteConfig.getInstance()
          .publishTemplateAsync(template).get();
  System.out.println("Template has been published");
  // See the ETag of the published template.
  System.out.println("ETag from server: " + publishedTemplate.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Unable to publish template.");
    System.out.println(rcError.getMessage());
  }
}

Как изменить Remote Config с помощью REST API

В этом разделе описаны основные возможности Remote Config REST API (https://firebaseremoteconfig.googleapis.com). Подробную информацию можно найти в документации по API.

Получите токен доступа для аутентификации и авторизации запросов API

Проекты Firebase поддерживают сервисные аккаунты Google, которые можно использовать для вызова серверных API Firebase с сервера приложения или из доверенной среды. Если вы разрабатываете код локально или развертываете приложение на собственных серверах, то можете использовать учетные данные, полученные с помощью этого сервисного аккаунта, для авторизации запросов к серверу.

Чтобы посмотреть все сервисные аккаунты для проекта Firebase, откройте раздел Settings (Настройки) и перейдите на вкладку Service accounts (Сервисные аккаунты).

Чтобы выполнить аутентификацию сервисного аккаунта и предоставить ему доступ к сервисам Firebase, необходимо создать файл закрытого ключа в формате JSON.

Чтобы создать файл закрытого ключа для сервисного аккаунта, выполните следующие действия:

  1. В консоли Firebase перейдите на вкладку Settings (Настройки) > Service accounts (Сервисные аккаунты).

  2. Нажмите Создать новый закрытый ключ, а затем подтвердите действие, нажав Создать ключ.

  3. Сохраните JSON-файл с ключом в надежном месте.

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

Чтобы задать переменную среды, выполните следующие действия:

Установите переменную среды GOOGLE_APPLICATION_CREDENTIALS, указав путь к файлу JSON, который содержит ключ сервисного аккаунта. Эта переменная применяется только к текущему сеансу оболочки, поэтому, если вы откроете новый сеанс, установите переменную снова.

Linux или macOS

export GOOGLE_APPLICATION_CREDENTIALS="KEY_FILE_PATH"

Windows

С помощью PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_FILE_PATH"

После выполнения описанных выше действий стандартные учетные данные приложения (ADC) смогут неявно определять ваши учетные данные, что позволит вам использовать учетные данные сервисного аккаунта при тестировании или запуске в средах, отличных от Google.

Чтобы получить краткосрочный токен доступа OAuth 2.0, используйте учетные данные Firebase вместе с библиотекой Google Auth для выбранного языка:

Node.js

 function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

В этом примере клиентская библиотека Google API выполняет аутентификацию запроса с помощью веб-токена JSON (JWT). Подробнее о веб-токенах JSON…

Python

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

Java

public static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  return googleCredentials.getAccessToken().getTokenValue();
}

После истечения срока действия токена доступа метод обновления токена вызывается автоматически для получения обновленного токена доступа.

Чтобы разрешить доступ к Remote Config, запросите область действия https://www.googleapis.com/auth/firebase.remoteconfig.

Изменить шаблон Remote Config

При работе с шаблонами Remote Config помните, что они имеют версии и что каждая версия имеет ограниченный срок службы с момента ее создания до момента, когда вы заменяете ее обновлением: 90 дней, с общим ограничением в 300 сохраненных версий. Подробнее о шаблонах и управлении версиями…

Скачайте текущий шаблон Remote Config.

Вы можете использовать API серверной части, чтобы получить текущую активную версию шаблона Remote Config в формате JSON.

Параметры и значения параметров, созданные специально как варианты в эксперименте A/B Testing, не включаются в экспортируемые шаблоны.

Используйте следующие команды:

cURL

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

Эта команда выводит полезную нагрузку JSON в один файл, а заголовки (включая Etag) – в другой.

Необработанный HTTP-запрос

Host: firebaseremoteconfig.googleapis.com

GET /v1/projects/my-project-id/remoteConfig HTTP/1.1
Authorization: Bearer token
Accept-Encoding: gzip

Этот вызов API возвращает следующий код JSON, а также отдельный заголовок, который включает ETag, используемый для последующего запроса.

Проверка шаблона Remote Config

При желании вы можете проверить изменения перед публикацией. Чтобы проверить изменения в шаблоне, добавьте к запросу на публикацию параметр URL ?validate_only=true. Если в ответе содержится код статуса 200 и обновленный тег etag с суффиксом -0, значит обновление прошло проверку. Любой другой ответ означает, что данные JSON содержат ошибки, которые необходимо исправить перед публикацией.

Обновить шаблон "Remote Config"

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

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

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

  • Персонализации нельзя импортировать из одного проекта в другой.

    Например, если в вашем проекте включена персонализация, а вы скачали и отредактировали шаблон, то сможете опубликовать его в том же проекте. Однако вы не сможете опубликовать его в другом проекте, пока не удалите персонализацию из шаблона.

  • Условия можно импортировать из одного проекта в другой, но учтите, что все значения условий (например, идентификаторы приложений или аудитории) должны существовать в целевом проекте до публикации.

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

  • Если шаблон, который вы планируете опубликовать, содержит условия, зависящие от Google Analytics, в целевом проекте должен быть включен Analytics.

cURL

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename

В команде curl можно указать контент, используя символ @, за которым следует название файла.

Необработанный HTTP-запрос

Host: firebaseremoteconfig.googleapis.com
PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1
Content-Length: size
Content-Type: application/json; UTF8
Authorization: Bearer token
If-Match: expected ETag
Accept-Encoding: gzip
JSON_HERE

Поскольку это запрос на запись, команда изменяет ETag, и обновленный ETag предоставляется в заголовках ответа следующей команды PUT.

Изменить условия (Remote Config)

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

{
  "conditions": [{
    "name": "android_english",
    "expression": "device.os == 'android' && device.country in ['us', 'uk']",
    "tagColor": "BLUE"
  }, {
    "name": "tenPercent",
    "expression": "percent <= 10",
    "tagColor": "BROWN"
  }],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "tenPercent": {
          "value": "Welcome to this new sample app"
        }
      },
      "description": "The sample app's welcome message"
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      },
      "conditionalValues": {
        "android_english": {
          "value": "true"
        }
      },
      "description": "Whether the welcome message should be displayed in all
      capital letters."
    }
  }
}

Изменения в приведенном выше фрагменте сначала определяют набор условий, а затем – значения по умолчанию и значения параметров на основе условий (условные значения) для каждого параметра. Они также добавляют необязательное описание для каждого элемента. Как и комментарии к коду, они предназначены для разработчиков и не отображаются в приложении. Для управления версиями также предоставляется ETag.

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

Коды ошибок HTTP

Код статуса Значение
200 Обновление выполнено
400 Произошла ошибка проверки. Например, если запрос содержит больше ключей, чем разрешено (2000), возвращается ошибка 400 (недопустимый запрос) с сообщением об ошибке Param count too large. Кроме того, этот код статуса HTTPS может появляться в следующих двух ситуациях:
  • Ошибка несоответствия версий возникла из-за того, что набор значений и условий был обновлен с момента последнего получения значения ETag. Чтобы устранить эту проблему, используйте команду GET, чтобы получить новый шаблон и значение ETag, обновите шаблон и отправьте его с новым значением ETag.
  • Команда PUT (запрос на обновление шаблона Remote Config) была выполнена без указания заголовка If-Match.
401 Произошла ошибка авторизации (не предоставлен токен доступа или Firebase Remote Config REST API не добавлен в проект в Cloud Developer Console).
403 Произошла ошибка аутентификации (указан неверный токен доступа).
500 Произошла внутренняя ошибка. Если вы столкнулись с этой ошибкой, отправьте запрос в службу поддержки Firebase.

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

После того как вы отправите изменения в шаблоне, перейдите в консоль Firebase и убедитесь, что они отображаются правильно. Это важно, поскольку порядок условий влияет на то, как они оцениваются (вступает в силу первое условие, которое оценивается как true).

Использование ETag и принудительные обновления

В REST API Remote Config используется тег объекта (ETag), который позволяет предотвратить состояние гонки и наложение обновлений ресурсов. Подробнее об ETag…

При использовании REST API рекомендуется кешировать ETag, предоставленный последней командой GET, и использовать это значение ETag в заголовке запроса If-Match при выполнении команд PUT. Если в результате выполнения команды PUT вы получили код статуса HTTPS 409, выполните команду GET, чтобы получить новый ETag и шаблон для следующей команды PUT.

Вы можете обойти ETag и защиту, которую он обеспечивает, принудительно обновив шаблон Remote Config следующим образом: If-Match: *. Однако мы не рекомендуем использовать этот подход, поскольку он может привести к потере обновлений шаблона Remote Config, если его обновляют несколько клиентов.Remote Config Такой конфликт может возникнуть, если API используют несколько API-клиентов или если обновления от API-клиентов и пользователей консоли Firebase противоречат друг другу.

Инструкции по управлению версиями шаблонов Remote Config приведены в статье Шаблоны Remote Config и управление версиями.

Измените Remote Config с помощью интерфейса командной строки Firebase

Интерфейс командной строки Firebase позволяет проверять, настраивать и откатывать шаблоны Remote Config, а также просматривать, проверять и удалять эксперименты и развертывания Remote Config прямо из командной строки.

Требования и настройка

  1. Установите Firebase CLI или обновите его до последней версии.

  2. Войдите в аккаунт Firebase.

    firebase login
  3. Укажите активный проект или задайте --project PROJECT_ID для каждой команды:

    firebase use PROJECT_ID

Убедитесь, что у вашего аккаунта или сервисного аккаунта есть необходимые разрешения IAM:

Сводка команд CLI

Команда Описание
firebase remoteconfig:versions:list Показывает последние версии шаблона Remote Config.
firebase remoteconfig:get Получает шаблон Remote Config (с возможностью записи в файл).
firebase remoteconfig:rollback Откат шаблона Remote Config к предыдущей версии.
firebase remoteconfig:experiments:list Выводит список всех экспериментов Remote Config в проекте.
firebase remoteconfig:experiments:get Получение сведений об определенном эксперименте Remote Config.
firebase remoteconfig:experiments:delete Удаляет определенный эксперимент Remote Config.
firebase remoteconfig:rollouts:list Выводит список всех развертываний Remote Config в проекте.
firebase remoteconfig:rollouts:get Получает сведения об определенном развертывании Remote Config.
firebase remoteconfig:rollouts:delete Удаляет определенное развертывание Remote Config.

Изменение шаблонов и версий Remote Config

Для просмотра, скачивания и отката шаблонов Remote Config и их истории версий используйте следующие команды:

Получение списка версий шаблона

По умолчанию показываются 10 последних версий шаблона Remote Config, включая номер версии, время обновления, источник обновления, тип обновления и updateUser.

firebase remoteconfig:versions:list [--limit NUMBER_OF_VERSIONS]
  • --limit NUMBER_OF_VERSIONS: максимальное количество версий, которые нужно вернуть. Укажите 0, чтобы получить все существующие версии (до 300 сохраненных версий).

Примеры:

  • Вывести список из 10 последних версий:

    firebase remoteconfig:versions:list
  • Чтобы посмотреть список всех доступных версий, выполните следующую команду:

    firebase remoteconfig:versions:list --limit 0
  • Показать пять последних версий:

    firebase remoteconfig:versions:list --limit 5

Получить шаблон

Получает шаблон Remote Config и выводит группы параметров, параметры, названия условий и версию. По умолчанию он извлекает последнюю активную версию и выводит отформатированную сводку в терминал.

firebase remoteconfig:get [-v, --version_number VERSION_NUMBER] [-o, --output FILENAME]
  • -v, --version_number VERSION_NUMBER – номер версии шаблона, который нужно получить. Если параметр не указан, по умолчанию используется последняя версия.
  • -o, --output FILENAME – записывает полезную нагрузку JSON шаблона непосредственно по указанному пути, а не выводит ее в stdout.

Примеры:

  • Показать текущий активный шаблон в терминале:

    firebase remoteconfig:get
  • Скачайте текущий активный шаблон в виде файла JSON:

    firebase remoteconfig:get -o remote_config_template.json
  • Скачать определенную версию (например, версию 12) в файл:

    firebase remoteconfig:get -v 12 -o remote_config_v12.json

Как выполнить откат шаблона

Откат активного шаблона Remote Config до предыдущей версии. Будет создана новая активная версия, контент которой идентичен целевой версии.

firebase remoteconfig:rollback [-v, --version_number VERSION_NUMBER] [--force]
  • -v, --version_number VERSION_NUMBER: номер целевой версии, до которой нужно выполнить откат. Если параметр не указан, по умолчанию используется непосредственно предшествующая версия (текущая версия минус 1).
  • --force – немедленный откат без запроса подтверждения (Y/N). Это полезно для конвейеров CI/CD и автоматизированных скриптов.

Примеры:

  • Чтобы выполнить откат до предыдущей версии с интерактивным подтверждением, введите:

    firebase remoteconfig:rollback
  • Откат до версии 8 без запроса:

    firebase remoteconfig:rollback -v 8 --force

Изменить A/B Testing эксперимент

Чтобы посмотреть список экспериментов Remote Config A/B Testing, проверить их или удалить, используйте следующие команды:

Список экспериментов

Возвращает список всех экспериментов Remote Config для проекта. Можно использовать фильтрацию и разбиение на страницы.

firebase remoteconfig:experiments:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]
  • --filter EXPRESSION – выражение фильтра, которое нужно применить к списку экспериментов.
  • --pageSize NUMBER: количество экспериментов, возвращаемых на страницу (по умолчанию – 10).
  • --pageToken TOKEN – токен для смещения страницы при получении результатов с разбивкой на страницы.

Пример:

firebase remoteconfig:experiments:list

Как посмотреть сведения об эксперименте

Возвращает подробные сведения об указанном эксперименте Remote Config.

firebase remoteconfig:experiments:get EXPERIMENT_ID

Пример:

firebase remoteconfig:experiments:get exp_promo_discount_2026

Удаление эксперимента

Удаляет указанный эксперимент Remote Config.

firebase remoteconfig:experiments:delete EXPERIMENT_ID

Пример:

firebase remoteconfig:experiments:delete exp_promo_discount_2026

Изменить Remote Config внедрение

Чтобы посмотреть список развертываний Remote Config, проверить или удалить их, используйте следующие команды CLI:

Получение списка выпусков

Возвращает список всех развертываний Remote Config для проекта с возможностью фильтрации и разбивки на страницы.

firebase remoteconfig:rollouts:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]
  • --filter EXPRESSION – выражение фильтра, которое нужно применить к списку развертываний.
  • --pageSize NUMBER – количество развертываний, возвращаемых на страницу (по умолчанию 10).
  • --pageToken TOKEN – токен для смещения страницы при получении результатов с разбивкой на страницы.

Пример:

firebase remoteconfig:rollouts:list

Подробнее о запуске

Возвращает полную информацию об указанном развертывании Remote Config.

firebase remoteconfig:rollouts:get ROLLOUT_ID

Пример:

firebase remoteconfig:rollouts:get rollout_new_checkout_flow

Как удалить внедрение

Удаляет указанное развертывание Remote Config.

firebase remoteconfig:rollouts:delete ROLLOUT_ID

Пример:

firebase remoteconfig:rollouts:delete rollout_new_checkout_flow

Общие сведения о командах CLI Firebase можно найти в справочнике по CLI Firebase.