Шаблоны Remote Config — это наборы параметров и условий в формате JSON, которые вы создали для своего проекта Firebase. Вы можете создавать клиентские шаблоны, из которых ваше приложение получает значения, и серверные шаблоны, из которых серверные клиенты могут получать значения.
В этом разделе рассматриваются клиентские шаблоны. Чтобы узнать о шаблонах, специфичных для сервера, нажмите «Серверные шаблоны» .Для изменения и управления шаблоном можно использовать консоль Firebase . Перейдите в раздел DevOps & Engagement > Remote Config, чтобы просмотреть содержимое шаблона в графическом формате.Страница параметров и страница условий .
Вы также можете использовать REST API и Admin SDK Remote Config или Firebase CLI для изменения и управления шаблоном клиента.
Вот пример файла шаблона сервера:
{
"parameters": {
"preamble_prompt": {
"defaultValue": {
"value": "You are a helpful assistant who knows everything there is to know about Firebase! "
},
"description": "Add this prompt to the user's prompt",
"valueType": "STRING"
},
"model_name": {
"defaultValue": {
"value": "gemini-pro-test"
},
"valueType": "STRING"
},
"generation_config": {
"defaultValue": {
"value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
},
"valueType": "JSON"
},
},
"version": {
"versionNumber": "19",
"isLegacy": true
}
}
Вы можете выполнять эти задачи по управлению версиями в консоли Firebase (перейдите в раздел DevOps & Engagement > Remote Config ):
- Отобразить все сохраненные версии шаблона
- Получить конкретную версию
- Откат к определенной версии клиента
- Удалите шаблоны Remote Config со страницы истории изменений .
Существует ограничение в 300 сохраненных версий для каждого типа шаблонов за все время их существования (300 клиентских шаблонов и 300 серверных шаблонов), включая номера сохраненных версий для удаленных шаблонов. Если вы опубликуете более 300 версий шаблонов для каждого типа шаблонов за время существования проекта, самые ранние версии будут удалены, и будет поддерживаться максимальное количество версий этого типа — 300.
При каждом обновлении параметров Remote Config создает новый версионированный шаблон Remote Config и сохраняет предыдущий шаблон в качестве версии, которую можно восстановить или откатить при необходимости. Номера версий увеличиваются последовательно от начального значения, сохраненного Remote Config . Все шаблоны содержат поле version , как показано на рисунке, содержащее метаданные о конкретной версии.
При необходимости вы можете удалять шаблоны Remote Config в разделе DevOps & Engagement > Remote Config >Изменить страницу историииз консоли Firebase .
Управление версиями шаблонов Remote Config
В этом разделе описывается, как управлять версиями шаблона Remote Config .
Отобразить список всех сохраненных версий шаблона Remote Config
Вы можете получить список всех сохраненных версий шаблона Remote Config . Для этого:
Консоль Firebase
В консоли Firebase перейдите на страницу DevOps & Engagement > Remote Config > Parameters .
Выберите значок «часы», расположенный в правом верхнем углу.
Это откроет страницу истории изменений , на которой в меню справа будет перечислены все сохраненные версии шаблона.
Для каждой сохраненной версии отображаются подробные сведения о том, были ли изменения внесены через консоль, через REST API, в результате отката или же это были поэтапные изменения, внесенные при принудительном сохранении шаблона.
Firebase CLI
firebase remoteconfig:versions:list
Используйте параметр --limit , чтобы ограничить количество возвращаемых версий. Передайте '0', чтобы получить все версии.
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);
});
}
Java
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>/remoteConfig:listVersions
Список шаблонов содержит метаданные для всех сохраненных версий, включая время обновления, пользователя, который его внес, и способ его выполнения. Вот пример элемента версии:
```json
{
"versions": [{
"version_number": "6",
"update_time": "2022-05-12T02:38:54Z",
"update_user": {
"name": "Jane Smith",
"email": "jane@developer.org",
"imageUrl": "https://lh3.googleusercontent.com/a-/..."
},
"description": "One small change on the console",
"origin": "CONSOLE",
"update_type": "INCREMENTAL_UPDATE"
}]
}
```
Получить конкретную версию шаблона Remote Config
Вы можете получить доступ к любой конкретной сохраненной версии шаблона Remote Config . Вот как получить доступ к сохраненной версии шаблона:
Консоль Firebase
В консоли Firebase перейдите на страницу DevOps & Engagement > Remote Config > Change history .
По умолчанию на странице отображается текущий активный шаблон. Чтобы просмотреть другую версию, выберите её в панели сведений справа.
Для просмотра подробного сравнения активного шаблона и любой другой сохраненной версии наведите курсор на контекстное меню любой невыбранной версии и выберите пункт «Сравнить с выбранной версией».
Firebase CLI
firebase remoteconfig:get -v VERSION_NUMBER
При желании вы можете записать результат в указанный файл с помощью -o, FILENAME .
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);
});
Java
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
Параметр URL ?version_number действителен только для операций GET ; его нельзя использовать для указания номеров версий для обновлений. Аналогичный запрос GET без параметра ?version_number получит текущий активный шаблон.
Откат к определенной сохраненной версии шаблона Remote Config
Вы можете вернуться к любой сохраненной версии шаблона. Вот как это сделать:
Консоль Firebase
В консоли Firebase перейдите на страницу DevOps & Engagement > Remote Config > Change history .
Найдите кнопку в правом верхнем углу страницы, чтобы просмотреть предыдущие версии шаблона, которые можно откатить.
Нажмите и подтвердите это только в том случае, если вы уверены, что хотите вернуться к предыдущей версии и немедленно использовать эти значения для всех приложений и пользователей.
Firebase CLI
firebase remoteconfig:rollback -v VERSION_NUMBER
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);
})
Java
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()); } }
ОТДЫХ
Для отката к сохраненному шаблону Remote Config отправьте HTTP POST-запрос с пользовательским методом :rollback и укажите в теле запроса конкретную версию, которую необходимо применить. Например:
curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'
В ответе содержится содержимое теперь активного сохраненного шаблона, а также метаданные его новой версии.
Обратите внимание, что эта операция отката фактически создает новую версию с номером. Например, откат с версии 10 до версии 6 фактически создает новую копию версии 6, отличающуюся от оригинала только тем, что ее номер версии равен 11. Оригинальная версия 6 по-прежнему сохраняется, если срок ее действия еще не истек, а версия 11 становится активным шаблоном.
Удалить шаблон Remote Config
Удалить шаблоны Remote Config можно с помощью консоли Firebase . Вот как удалить шаблон:
В консоли Firebase перейдите на страницу DevOps & Engagement > Remote Config > Parameters .
Нажмите
. Изменить историю . Переключитесь на шаблон, который хотите удалить, и нажмите
More , затем выберите Delete . Когда появится запрос на подтверждение удаления, нажмите «Удалить» .
Загрузите и опубликуйте шаблоны Remote Config .
Загрузите и опубликуйте шаблоны Remote Config , чтобы интегрировать их в ваши системы контроля версий и сборки, автоматизировать обновления конфигурации и синхронизировать параметры и значения в нескольких проектах.
Вы можете скачать текущий активный шаблон Remote Configиз консоли Firebase .Затем вы можете обновить экспортированный JSON-файл и опубликовать его в том же проекте, или опубликовать его в новом или существующем проекте.
Допустим, у вас есть несколько проектов, представляющих разные этапы жизненного цикла разработки программного обеспечения, такие как среда разработки, тестирования, промежуточная и производственная среды. В этом случае вы можете перенести полностью протестированный шаблон из промежуточной среды в производственную, загрузив его из промежуточного проекта и опубликовав в производственном проекте.
Этот метод также можно использовать для переноса конфигураций из одного проекта в другой или для заполнения нового проекта параметрами и значениями из существующего проекта.
Параметры и значения параметров, созданные специально в качестве вариантов в эксперименте A/B Testing не включаются в экспортируемые шаблоны.
Для экспорта и импорта шаблонов Remote Config :
- Загрузите текущий шаблон конфигурации Remote Config .
- Проверьте шаблон Remote Config .
- Опубликуйте шаблон Remote Config .
Загрузите текущий шаблон удаленной конфигурации.
Для загрузки активного шаблона Remote Config в формате JSON используйте следующую команду:
Консоль Firebase
В консоли Firebase перейдите на страницу DevOps & Engagement > Remote Config > Parameters or Conditions .
Откройте
В меню выберите «Загрузить текущий файл конфигурации» . При появлении запроса нажмите «Скачать файл конфигурации» , выберите место, куда хотите сохранить файл, а затем нажмите «Сохранить» .
Firebase CLI
firebase remoteconfig:get -o filename
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());
ОТДЫХ
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename
Эта команда выводит JSON-данные в один файл, а заголовки (включая ETag) — в отдельный файл headers .
Проверьте шаблон удаленной конфигурации.
Вы можете проверить обновления шаблонов перед публикацией, используя Firebase Admin SDK или REST API. Шаблоны также проверяются при попытке публикации из Firebase CLI или консоли Firebase . Процесс проверки шаблона выявляет ошибки, такие как повторяющиеся ключи для параметров и условий, недопустимые имена условий или несуществующие условия, а также неправильно отформатированные ETags. Например, запрос, содержащий больше допустимого количества ключей — 2000 — вернет сообщение об ошибке « Param count too large .
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()); } }
ОТДЫХ
Для проверки обновлений шаблона добавьте к запросу на публикацию параметр URL ?validate_only=true :
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?validate_only=true -d @filename
Если ваш шаблон был успешно проверен, команда curl вернет отправленный вами JSON-шаблон, и в сохраненном файле headers вы найдете HTTP/2-статус 200 и обновленный ETag с суффиксом -0 . Если ваш шаблон не был проверен, вы получите ошибку проверки в JSON-ответе, и ваш файл headers будет содержать ответ, отличный от 200 (и без ETag).
Опубликуйте шаблон Remote Config .
После загрузки шаблона, внесения необходимых изменений в JSON-содержимое и его проверки, вы можете опубликовать его в проекте.
Публикация шаблона заменяет весь существующий шаблон конфигурации обновленным файлом и увеличивает номер версии шаблона на единицу. Поскольку заменяется вся конфигурация, если вы удалите параметр из JSON-файла и опубликуете его, этот параметр будет удален с сервера и больше не будет доступен клиентам.
После публикации изменения параметров и значений немедленно становятся доступны вашим приложениям и пользователям. При необходимости вы можете откатиться к предыдущей версии .
Для публикации шаблона используйте следующие команды:
Консоль Firebase
В консоли Firebase перейдите на страницу DevOps & Engagement > Remote Config > Parameters or Conditions .
Откройте
В меню выберите «Опубликовать из файла» . При появлении запроса нажмите «Обзор» , найдите и выберите файл Remote Config который хотите опубликовать, затем нажмите «Выбрать» .
Файл будет проверен, и в случае успеха вы сможете нажать кнопку «Опубликовать» , чтобы немедленно сделать конфигурацию доступной для ваших приложений и пользователей.
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()); } }
ОТДЫХ
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 вы можете указать содержимое, используя символ "@", за которым следует имя файла.
Настройки и условия Remote Config включены в загруженные шаблоны, поэтому важно учитывать следующие ограничения при попытке публикации в другом проекте:
Настройки персонализации нельзя импортировать из одного проекта в другой.
Например, если в вашем проекте включены персонализации, и вы загружаете и редактируете шаблон, вы можете опубликовать его в том же проекте, но не можете опубликовать его в другом проекте, если не удалите персонализации из шаблона.
Условия можно импортировать из проекта в проект, но обратите внимание, что любые конкретные значения условий (например, идентификаторы приложений или аудитории) должны существовать в целевом проекте до публикации.
Например, если у вас есть параметр Remote Config , использующий условие, указывающее значение платформы
iOS, шаблон можно опубликовать в другом проекте, поскольку значения платформы одинаковы для всех проектов. Однако, если он содержит условие, зависящее от конкретного идентификатора приложения или целевой аудитории, которых нет в целевом проекте, проверка завершится неудачей.Если шаблон, который вы планируете опубликовать, содержит условия, зависящие от Google Analytics , Analytics необходимо включить в целевом проекте.
Загрузите шаблон Remote Config по умолчанию.
Поскольку ваше приложение может быть не всегда подключено к Интернету, вам следует настроить значения по умолчанию для всех параметров Remote Config на стороне клиента. Также следует периодически синхронизировать значения по умолчанию для клиента приложения и значения по умолчанию для параметров бэкэнда Remote Config , поскольку они могут меняться со временем.
As described in the platform-specific links at the end of this section, you can manually set these defaults in your app or you can streamline this process by downloading files that contain only the key-value pairs for all parameters and their default values in the active Remote Config template. You can then include this file in your project and configure your app to import these values.
Вы можете загрузить эти файлы в формате XML для приложений Android, в формате списка свойств (plist) для приложений iOS и в формате JSON для веб-приложений.
Мы рекомендуем периодически загружать настройки Remote Config по умолчанию перед выпуском любой новой версии приложения, чтобы обеспечить синхронизацию вашего приложения и бэкэнда Remote Config .
Вот как загрузить файл, содержащий настройки шаблона по умолчанию:
ОТДЫХ
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'
В качестве значения format используйте XML , PLIST или JSON в зависимости от того, какой формат файла вы хотите загрузить.
Консоль Firebase
В консоли Firebase перейдите на страницу DevOps & Engagement > Remote Config > Parameters .
Откройте
В меню выберите пункт «Загрузить значения по умолчанию» . При появлении запроса выберите переключатель, соответствующий формату файла, который вы хотите загрузить, а затем нажмите «Загрузить файл» .
Для получения дополнительной информации об импорте значений по умолчанию Remote Config в ваше приложение см.:
Установите значения параметров по умолчанию в приложении для Android.
Установите значения параметров по умолчанию в приложении для iOS.
Установите значения параметров по умолчанию для веб-версии приложения.
Установите значения параметров по умолчанию в приложении Unity.
Установите значения параметров по умолчанию в приложении для C++.