Создание и инициализация RemoteConfigClient
Инициализация RemoteConfigClient должна происходить в момент Application.onCreate(), так как при запуске фоновой синхронизации SDK должна быть проинициализирована.
Создание RemoteConfigClient
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 не передается, у этом случае будет возвращен дефолтный конфиг. |
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
|
Описание
|
---|---|
UpdateBehaviour.Actual |
При инициализации с этим типом обновления, каждый запрос конфигурации будет происходить через запрос к серверу. Данный тип обновления гарантирует получение самой актуальной конфигурации, но скорость запроса конфигурации будет зависеть от скорости сети. Данный тип инициализации отменяет процесс фонового обновления. |
UpdateBehaviour.Default(minSyncInterval) |
При инициализации с этим типом обновления, запрос конфигурации будет происходить из локального постоянного хранилища, которое будет обновляться в указанный интервал. Если инициализация происходит первый раз (локальное постоянное хранилище пустое), то происходит запрос на сервер для его заполнения, время которого зависит от объема данных и скорости сети. Доступ к конфигурации будет ожидать завершения инициализации. Данный тип инициализации не гарантирует, что в рамках жизни процесса получение конфигурации будет отдавать одинаковый результат, так как в фоне может произойти синхронизация данных. Данный тип инициализации запускает процесс фонового обновления. |
UpdateBehaviour.Snapshot(minSyncInterval) |
При инициализации с этим типом обновления, запрос конфигурации будет происходить из локального 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 дает возможность получать колбэки о работе SDK, такие как завершение инициализации и обновление постоянного хранилища. Колбэки слушателя вызываются на MainThread.
Добавить реализацию RemoteConfigClientEventListener можно следующим образом:
val listener = RemoteConfigClientEventListenerImpl() remoteConfigClientBuilder.setConfigRequestParameterProvider(provider) |
Инициализация RemoteConfigClient
Инициализация RemoteConfigClient выполняется асинхронно, результат инициализации можно отслеживать через класс Task, который возвращает метод init() или через слушатель.
remoteConfigClient.init() |