SDK Remote Config для Kotlin (версия 0.1.0)
SDK Remote Config – это облачный сер вис, который позволяет изменять поведение и внешний вид вашего приложения, не требуя от пользователей загрузки обновления приложения. Плагин инкапсулирует в себе запрос конфигурации с сервера, кэширование, фоновое обновление. Имеет удобный интерфейс API для получения данных.
Пример реализации
Ознакомьтесь с приложением-примером, чтобы узнать, как правильно интегрировать SDK Remote Config.
Ключевые особенности
- Выбор наиболее удобного механизма обновления конфигурации.
- Возможность указывать процент распространения конфигурации на аудиторию.
- Возможность передавать дополнительную информацию для построения воронки конкретной конфигурации. Формировать конфигурацию можно даже для конкретных пользо вателей.
- Набор callback, который можно использовать для аналитики.
- Минимальное количество внешних зависимостей.
Подключение в проект
-
Подключите репозиторий:
build.gradlerepositories {
maven {
url = uri("https://artifactory-external.vkpartner.ru/artifactory/maven")
}
} -
Подключите зависимости:
build.gradledependencies {
implementation("ru.rustore.sdk:remoteconfig:0.1.0")
}
Инициализация
Создание RemoteConfigClient
Инициализация RemoteConfigClient
должна происходить в момент Application.onCreate()
, так как при запуске фоновой синхронизации SDK должна быть проинициализирована.
val remoteConfigClient = RemoteConfigClientBuilder(appId = AppId("your_app_id"), context = applicationContext).build()
Через RemoteConfigClientBuilder
можно установить опциональные параметры для получения конкретной конфигурации.
Повторный вызов RemoteConfigClientBuilder.build()
вызовет ошибку RemoteConfigClientAlreadyExist .
После вызова метода RemoteConfigClientBuilder.build()
создается экземпляр RemoteConfigClient
и записывается синглтон.
Получить созданный экземпляр можно следующим образом.
RemoteConfigClient.instance
Доступ через статическую переменную до создания через RemoteConfigClientBuilder.build()
вызовет ошибку RemoteConfigClientNotCreated
.
Опциональные параметры 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 можно следующим образом.
remoteConfigClientBuilder.setUpdateBehaviour(UpdateBehaviour.Actual)
Различия в значениях UpdateBehaviour
UpdateBehaviour | Описание |
---|---|
| При инициализации каждый запрос конфигурации выполняется через запрос к серверу. Значение Этот тип инициализации отменяет процесс фонового обновления. |
| При инициализации запрос конфигурации выполняется из локального постоянного хранилища, которое обновляется в указанный интервал. Если инициализация выполняется первый раз и локальное постоянное хранилище пустое, запрос отправляется на сервер. Скорость выполнения запроса зависит от объема данных и скорости сети. Доступ к конфигурации будет ожидать завершения инициализации. Значение Этот тип инициализации запускает процесс фонового обновления. |
| При инициализации запрос конфигурации выполняется из локального inMemory-хранилища. inMemory-хранилище заполняется результатом первого запроса и з постоянного хранилища и сохраняется в таком виде до конца жизни процесса. Если инициализация выполняется первый раз и локальное постоянное хранилище пустое, запрос отправляется на сервер. Скорость выполнения запроса зависит от объема данных и скорости сети. Доступ к конфигурации будет ожидать завершения инициализации. Значение Этот тип инициализации запускает процесс фонового обновления. |
ConfigRequestParameterProvider
Реализация ConfigRequestParameterProvider
дает возможность динамически передавать параметры на сервер для синхронизации конфигурации.
Поддерживаемый список параметров: Language
и Account
.
class ConfigRequestParameterProviderImpl : ConfigRequestParameterProvider {
override fun getConfigRequestParameter(): ConfigRequestParameter =
ConfigRequestParameter(
language = Language(Locale.getDefault().language),
account = Session.id,
)
}
Реализация метода должна выполняться быстро, без длительных операций.
Реализация долго работающего метода getConfigRequestParameter
может привести к большим задержкам при получении конфигурации.
Вызов метода будет происходить на потоках RemoteConfig SDK.
Добавить реализацию ConfigRequestParameterProvider
можно следующим образом.
val provider = ConfigRequestParameterProviderImpl()
remoteConfigClientBuilder.setConfigRequestParameterProvider(provider)
RemoteConfigClientEventListener
Реализация RemoteConfigClientEventListener
дает возможность получать обратные вызовы (callback) о работе SDK, такие как завершение инициализации и обновление постоянного хранилища.
Callback слушателя вызываются на MainThread
.
Добавить реализацию RemoteConfigClientEventListener
можно следующим образом.
val listener = RemoteConfigClientEventListenerImpl()
remoteConfigClientBuilder.setRemoteConfigClientEventListener(listener)
Пример имплементации RemoteConfigEventListener
.
class RemoteConfigListenerImpl: RemoteConfigClientEventListener {
override fun backgroundJobErrors(exception: RemoteConfigException.BackgroundConfigUpdateError) {
//Возвращает ошибку фоновой работы
}
override fun firstLoadComplete() {
//Вызывается при окончании первой загрузки
}
override fun initComplete() {
//Вызывается при окончании инциализации
}
override fun memoryCacheUpdated() {
//Вызывается при измененияя кэша в памяти
}
override fun persistentStorageUpdated() {
//Вызывается при изменении постоянного хранилища
}
override fun remoteConfigNetworkRequestFailure(throwable: Throwable) {
//Вызывается при ошибке сетевого запроса Remote Сonfig
}
}