Перейти к основному содержимому

Remote Config Android

Краткое содержание

Remote Config — инструмент для настройки поведения и внешнего вида приложения без изменения кода и публикации новых версий. Он позволяет задавать значения по умолчанию, получать обновления с сервера и активировать их в приложении.

Как это работает
В приложении задаются дефолтные значения, которые определяют интерфейс. Через Remote Config можно управлять этими настройками для всех пользователей или конкретных сегментов.

Шаг 1. Инициализация
Создайте экземпляр Remote Config:

val analytics = MtsAnalytics.getInstance()
val remoteConfig = analytics.remoteConfig

Шаг 2. Установка значений по умолчанию
Задайте значения через файл JSON или объект Map<String, String>. Например:

  • из файла ресурсов: создайте default_config.json и укажите путь в setDefaultConfig.
  • из объекта Map: используйте setDefaults с конфигурацией в коде.

Шаг 3. Настройка параметров запросов
Установите минимальный интервал minFetchInterval (по умолчанию 300000 мс) для предотвращения частых запросов к серверу.

Шаг 4. Получение и активация значений с сервера

  1. Вызовите fetchRemoteConfigValues для получения обновлений.
  2. Активируйте значения с помощью activate().
    Доступны асинхронный вызов, suspend-функция и метод fetchRemoteConfigValuesAndActivate.

Шаг 5. Получение значений после активации
Используйте activeConfig для доступа к обновленным данным. Доступны функции:

  • stringValue(key: String)
  • booleanValue(key: String)
  • longValue(key: String)
  • jsonObject(key: String)

Получение значений по умолчанию
Доступ к значениям по умолчанию через defaultConfig. Подписка на изменения возможна через collect.

Дальнейшие шаги
Настройте эксперимент в интерфейсе МТС Аналитики. Данные будут передаваться после запуска эксперимента и релиза приложения.

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. Получение и активация значений с сервера

Совет

Рекомендуется получать и активировать значения с сервера как можно раньше при старте приложения, чтобы события попадали в текущий эксперимент.

  1. Чтобы получить обновленные значения с сервера, вызовите метод fetchRemoteConfigValues.

  2. Активируйте значения с помощью метода 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 продуктологу или аналитику необходимо настроить эксперимент в интерфейсе МТС Аналитики. Данные будут передаваться после запуска эксперимента и релиза приложения.