SDK Remote Config для Flutter (версия 1.0.0)
SDK Remote Config – это облачный сервис, который позволяет изменять поведение и внешний вид вашего приложения, не требуя от пользователей загрузки обновления приложения. Плагин инкапсулирует в себе запрос конфигурации с сервера, кэширование, фоновое обновление. Имеет удобное API для получения данных.
Пример реализации
Ознакомьтесь с приложением-примером, чтобы узнать, как правильно интегрировать SDK Remote Config.
Ключевые особенности
- Выбор наиболее удобного механизма обновления конфигурации.
- Возможность указывать процент распространения конфигурации на аудиторию.
- Возможность передавать дополнительную информацию для построения воронки конкретной конфигурации. Формировать конфигурацию можно даже для конкретных пользователей.
- Набор callback, который можно использовать для аналитики.
- Минимальное количество внешних зависимостей.
Подключение в проект
Для подключения пакета к проекту нужно выполнить команду
flutter pub add flutter_rustore_remoteconfig
Эта команда добавит строчку в файл pubspec.yaml
dependencies:
flutter_rustore_remoteconfig: ^1.0.0
Инициализация
Создание RemoteConfigClient
Инициализация RemoteConfigClient
должна происходить в момент Application.onCreate()
, так как при запуске фоновой синхронизации SDK должна быть проинициализирована.
Для работы с конфигом, нам надо создать RemoteConfigClient с помощью метода
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) {
});