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

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

Совет

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

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