Remote Config Android
Краткое содержание
Remote Config — это инструмент, позволяющий настроить поведение и внешний вид приложения без изменения кода и публикации приложения. Он позволяет задавать значения по умолчанию, получать обновления с сервера и активировать их в приложении.
Как это работает
Remote Config позволяет управлять настройками приложения, переопределяя их для всех пользователей или сегментов. Это обеспечивает гибкость в изменении интерфейса и функционала без обновления приложения.
Шаг 1. Инициализация
Создайте экземпляр Remote Config через MtsAnalytics.getInstance().remoteConfig.
Шаг 2. Установка значений по умолчанию
Задайте значения по умолчанию, чтобы приложение работало до получения данных с сервера. Это можно сделать:
- из файла ресурсов (например,
default_config.jsonв папкеres/raw). - из объекта
Map<String, String>в коде приложения.
Шаг 3. Настройка параметров запросов
Установите минимальный интервал minFetchInterval (по умолчанию 300000 мс) для предотвращения частых запросов к серверу.
Шаг 4. Получение и активация значений с сервера
Получите и активируйте значения с сервера как можно раньше при старте приложения. Используйте асинхронные методы, suspend-функции или объединённый вызов fetchRemoteConfigValuesAndActivate().
Шаг 5. Получение значений после активации
Доступ к активным значениям осуществляется через activeConfig, который представляет собой StateFlow<MARemoteConfigData>. Используйте функции stringValue, booleanValue, longValue, jsonObject для получения данных по ключу.
Получение значений по умолчанию
Доступ к значениям по умолчанию возможен через defaultConfig, аналогично activeConfig.
Дальнейшие шаг и
После настройки Remote Config необходимо настроить эксперимент в интерфейсе МТС Аналитики. Данные будут передаваться после запуска эксперимента и релиза приложения.
Remote Config — это инструмент, позволяющий настроить поведение и внешний вид приложения без изменения кода и публикации приложения.
Remote Config позволяет задавать значения по умолчанию, получать обновления с сервера и активировать их для использования в приложении без необходимости выпуска новых версий.
Как это работает
В приложении прописываются дефолтные значения — они определяют, как выглядит и ведёт себя интерфейс. Через Remote Config вы сможете управлять этими настройками и переопределять их для всех пользователей или конкретных сегментов.
Шаг 1. Инициализация
Создайте экземпляр Remote Config
val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig
Шаг 2. Установка значений по умолчанию
Задайте значения по умолчанию для параметров конфигурации. Это обеспечит работу приложения до получения Remote Config с сервера:
- из файла ресурсов
Создайте файл конфигурации JSON с настройками по умолчанию. Например, default_config.json.
Пример:
{
"feature_enabled": true,
"max_items": 10,
"welcome_message": "Добро пожаловать!"
}
Добавьте файл конфигурации в ресурсы вашего проекта. Например, в папку res/raw.
Затем укажите путь к файлу в методе setDefaultConfig:
val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig
remoteConfig.setDefaultConfig(R.raw.default_config)
- из объекта
Map<String, String>
В коде приложения загрузите конфигурацию по умолчанию при инициализации MARemoteConfig:
Пример:
val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig
val configSettings = mapOf(
"feature_enabled" to "true",
"max_items" to "10",
"welcome_message" to "Добро пожаловать!"
)
remoteConfig.setDefaults(configSettings)
Шаг 3. Настройка параметров запросов
Рекомендуем установить относительно небольшой минимальный интервал выборки.
Если приложение выполняет запрос слишком часто за короткий период времени, SDK возвращает throttle — запрос не выполняется.
FetchInterval — минимальный интервал minFetchInterval (мс.) между последовательными запросами к серверу.
Используйте для предотвращения частых запросов. Значение по умолчанию: 300000
val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig
remoteConfig.maRemoteConfigCfg = MARemoteConfigCfg(remoteConfigFetchInterval = 300000)
Шаг 4. Получение и активация значений с сервера
Рекомендуется получать и активировать значения с сервера как можно раньше при старте приложения, чтобы события попадали в текущий эксперимент.
-
Чтобы получить обновленные значения с сервера, вызовите метод
fetchRemoteConfigValues. -
Активируйте значения с помощью метода
activate().
Асинхронное получение:
val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig
remoteConfig.fetchRemoteConfigValues { status: MARemoteConfigResult ->
if (status == MARemoteConfigResult.Success) {
remoteConfig.activate()
}
}
Получение с помощью suspend-функции:
Если хотите получить и активировать значения за один вызов, используйте
val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig
val status = remoteConfig.fetchRemoteConfigValues()
if (status == MARemoteConfigResult.Success) {
remoteConfig.activate()
}
Получение и активация:
val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig
val status = remoteConfig.fetchRemoteConfigValuesAndActivate()
if (status == MARemoteConfigResult.Success) {
println("Конфигурация успешно обновлена и активирована")
}
Шаг 5. Получение значений после активации
После успешной активации полученные значения будут доступны через поле activeConfig.
activeConfig — это объект StateFlow<MARemoteConfigData>, на изменения которого можно подписаться или получить текущее значение. Внутри него есть поле data, которое хранит конфигурацию типа Map<String, Any?>.
Для удобства используйте функции для получения значений конфигурации по ключу:
| Функция | Что возвращает |
|---|---|
stringValue(key: String): | String значение по ключу |
booleanValue(key: String): | Boolean значение по ключу |
longValue(key: String): | Long значение по ключу |
jsonObject(key: String): | JsonObject значение по ключу. Этот метод возвращает объект, реализующий протокол MTRemoteConfigValue, который позволяет получить значение в различных форматах |
Пример:
val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig
val status = remoteConfig.fetchRemoteConfigValuesAndActivate()
if (status == MARemoteConfigResult.Success) {
// Текущее значение активной конфигурации
val configData = remoteConfig.activeConfig.value
// Подписка на изменения активной конфигурации
analytics.remoteConfig.activeConfig.collect { config: MARemoteConfigData ->
// Обработка изменений
Log.d("RemoteConfig", "Feature enabled: ${config.getBoolean("feature_enabled")}")
}
}
Получение значений по умолчанию
Если вам нужно получить значение по умолчанию, используйте поле defaultConfig:
Пример
val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig
val configSettings = mapOf(
"feature_enabled" to "true",
"max_items" to "10",
"welcome_message" to "Добро пожаловать!"
)
remoteConfig.setDefaults(configSettings)
// Текущее значение конфигурации по умолчанию
val defaultConfig = remoteConfig.defaultConfig.value
// Подписка на изменения конфигурации по умолчанию
analytics.remoteConfig.defaultConfig.collect { config: MARemoteConfigData ->
// Обработка изменений
Log.d("RemoteConfig", "Feature enabled: ${config.getBoolean("feature_enabled")}")
}
Дальнейшие шаги
После добавления Remote Config продуктологу или аналитику необходимо настроить эксперимент в интерфейсе МТС Аналитики. Данные будут передаваться после запуска эксперимента и релиза приложения.