SDK Remote Config для Flutter (версия 6.0.1)
SDK Remote Config – это облачный сервис, который позволяет изменять поведение и внешний вид вашего приложения, не требуя от пользователей загрузки обновления приложения. Плагин инкапсулирует в себе запрос конфигурации с сервера, кэширование, фоновое обновление. Имеет удобный интерфейс API для получения данных.
Пример реализации
Ознакомьтесь с приложением-примером, чтобы узнать, как правильно интегрировать SDK Remote Config.
Ключевые особенности
- Выбор наиболее удобного механизма обновления конфигурации.
- Возможность указывать процент распространения конфигурации на аудиторию.
- Возможность передавать дополнительную информацию для построения воронки конкретной конфигурации. Формировать конфигурацию можно даже для конкретных пользователей.
- Набор callback, который можно использовать для аналитики.
- Минимальное количество внешних зависимостей.
Подключение в проект
30.09.2026 репозиторий artifactory-external.vkpartner.ru будет отключён. При использовании этого URL Gradle больше не сможет загрузить зависимости RuStore.
В плагинах версии 10.5.1 и выше используется рабочий репозиторий https://nexus-external.rustore.ru/repository/maven-rustore-exposed.
Если обновление в настоящий момент невозможно, замените в проекте все старые адреса репозитория:
https://artifactory-external.vkpartner.ru/artifactory/maven-rustore-exposedhttps://artifactory-external.vkpartner.ru/artifactory/maven
на новый адрес:
https://nexus-external.rustore.ru/repository/maven-rustore-exposed.
Устаревший адрес репозитория можно заменить вручную
Ручная замена адреса
-
Откройте файл установленного пакета:
flutter_rustore_remoteconfig/android/build.gradle -
В файле найдите и замените все вхождения старых адресов на новый (перечислены выше).
Для подключения пакета к проекту нужно выполнить следующую команду.
flutter pub add flutter_rustore_remoteconfig
Эта команда добавит строчку в файл pubspec.yaml.
dependencies:
flutter_rustore_remoteconfig: ^6.0.1
Инициализация
Создание RemoteConfigClient
Инициализация RemoteConfigClient должна происходить в момент Application.onCreate(), так как при запуске фоновой синхронизации SDK должна быть проинициализирована.
Для работы с конфигом нужно создать RemoteConfigClient с помощью метода create.
create(
String appId,
PluginUpdateBehavior updateBehavior,
int interval, StaticParameters parameters,
Function? onBackgroundJobErrors,
Function? onFirstLoadComplete,
Function? onMemoryCacheUpdated,
Function? onInitComplete,
Function? onPersistentStorageUpdated,
Function? onRemoteConfigNetworkRequestFailure}
)
Пример вызова метода create.
FlutterRustoreRemoteconfig.create(
appId,
behavior,
interval,
Parameters(),
onBackgroundJobErrors: (value) {
},
onFirstLoadComplete: (value) {
},
onMemoryCacheUpdated: (value) {
},
onInitComplete: (value) {
},
onPersistentStorageUpdated: (value) {
},
onRemoteConfigNetworkRequestFailure: (value) {
});
appId - Application id вашего проекта Remote config;
behavior - ролитика обновления SDK;
interval - время для изменения политики обновления snapshot;
parameters - статические параметры SDK;
Function? onBackgroundJobErrors - возвращает ошибку фоновой работы;
Function? onFirstLoadComplete - вызывается при окончании первой загрузки;
Function? onMemoryCacheUpdated - вызывается при измененияя кэша в памяти;
Function? onInitComplete - вызывается при окончании инциализации;
Function? onPersistentStorageUpdated - вызывается при изменении постоянного хранилища;
Function? onRemoteConfigNetworkRequestFailure - вызывается при ошибке сетевого запроса Remote Сonfig.
Опциональные параметры RemoteConfigClientBuilder
| Параметр | Описание |
|---|---|
OsVersion | Условие в конфигураторе: Os Version Позволят сравнивать OsVersion со значением, установленным в интерфейсе. По умолчанию OsVersion не передается, в этом случае возвращается конфиг по умолчанию. |
DeviceModel | Условие в конфигураторе: Device Model Позволят сравнивать DeviceModel со значением, установленным в интерфейсе. По умолчанию DeviceModel не передается, у этом случае возвращается конфиг по умолчанию. |
Language | Условие в конфигураторе: Language Позволят сравнивать Language со значением, установленным в интерфейсе. По умолчанию Language не передается, у этом случае возвращается конфиг по умолчанию.Для передачи Language необходимо реализовать ConfigRequestParameterProvider. |
Account | Условие в конфигураторе: Account Позволят сравнивать account со значением, установленным в интерфейсе.Условие в конфигураторе: Account Percentile Позволят раздавать конфиг по значению account на определенный процент.Условие в конфигураторе: Interval Account Percentile Позволят раздавать конфиг по значению account на определенный процент и в определенный день.Для передачи Account необходимо реализовать ConfigRequestParameterProvider. |
DeviceId | Условие в конфигураторе: DeviceID Позволят сравнивать DeviceId со значением, установленным в интерфейсе.Условие в конфигураторе: DeviceID Percentile Позволят раздавать конфиг по значению DeviceId на определенный процент.Условие в конфигураторе: Interval DeviceID Percentile Позволят раздавать конфиг по значению DeviceId на определенный процент и в определенный день. |
AppVersion | Условие в конфигураторе: App Version Позволят сравнивать AppVersion со значением, установленным в интерфейсе. |
Environment | Условие в конфигураторе: App Environment Позволят сравнивать Environment со значением, установленным в интерфейсеEnvironment может принимать значения: Alpha, Beta, Release.Этот параметр удобно использовать для тестирования конфигурации на различных сборках приложения. |
AppBuild | Условие в конфигураторе: App Build Позволят сравнивать AppBuild со значением, установленным в интерфейсе. |
UpdateBehaviour
UpdateBehaviour — это параметр, определяющий поведение SDK.
При создании экземпляра RemoteConfigClientBuilder, по умолчанию используется значение UpdateBehaviour.Default с интервалом синхронизации 15 минут.
Установить другое поведение SDK можно передав значение в метод create.
enum PluginUpdateBehavior {
actualBehavior,
defaultBehavior,
snapshotBehavior,
}
Различия в значениях UpdateBehaviour
UpdateBehaviour | Описание |
|---|---|
| При инициализации каждый запрос конфигурации выполняется через запрос к серверу. Значение Этот тип инициализации отменяет процесс фонового обновления. |
| При инициализации запрос конфигурации выполняется из локального постоянного хранилища, которое обновляется в указанный интервал. Если инициализация выполняется первый раз и локальное постоянное хранилище пустое, запрос отправляется на сервер. Скорость выполнения запроса зависит от объема данных и скорости сети. Доступ к конфигурации будет ожидать завершения инициализации. Значение Этот тип инициализации запускает процесс фонового обновления. |
| При инициализации запрос конфигурации выполняется из локального inMemory-хранилища. inMemory-хранилище заполняется результатом первого запроса из постоянного хранилища и сохраняется в таком виде до конца жизни процесса. Если инициализация выполняется первый раз и локальное постоянное хранилище пустое, запрос отправляется на сервер. Скорость выполнения запроса зависит от объема данных и скорости сети. Доступ к конфигурации будет ожидать завершения инициализации. Значение Этот тип инициализации запускает процесс фонового обновления. |
ConfigRequestParameterProvider
RemoteConfigClientEventListener
Реализация RemoteConfigClientEventListener дает возможность получать обратные вызовы (callback) о работе SDK, такие как завершение инициализации и обновление постоянного хранил ища.
Callback слушателя вызываются на MainThread.
Обработку Callback слушателя надо делать при вызове метода create.
FlutterRustoreRemoteconfig.create(
onBackgroundJobErrors: (value) {
},
onFirstLoadComplete: (value) {
},
onMemoryCacheUpdated: (value) {
},
onInitComplete: (value) {
},
onPersistentStorageUpdated: (value) {
},
onRemoteConfigNetworkRequestFailure: (value) {
});
Инициализация RemoteConfigClient
Инициализация RemoteConfigClient выполняется асинхронно, результат инициализации можно отслеживать через класс Task, который возвращает метод init() или через слушатель.
FlutterRustoreRemoteconfig.init();
Получение конфигурации
FlutterRustoreRemoteconfig.getRemoteConfig().then(((value) {
}), onError: (err) {
});
Класс RemoteConfig
Метод getRemoteConfig возвращает нам экземпляр RemoteConfig — это текущий набор всех данных, полученных в зависимости от выбранной политики обновления при инициализации, экземпляр имеет весь набор ключей, которые были переданы с сервера в зависимости от параметров, указанных при инициализации.
Проверка доступности ключа
remoteConfig.containsKey("my-key")
Метод проверяет наличие ключа в текущем экземпляре RemoteConfig.