Создание и инициализация 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 не передается, у этом случае будет возвращен дефолтный конфиг.

Для передачи 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
Описание
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()
Обновлено 12 сентября 2023 г.
Was this information helpful?