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

RuStore Remote Config: основы, быстрый старт и руководство по управлению конфигурацией

RuStore Remote Config — инструмент для управления конфигурацией мобильных приложений. Позволяет реализовать функции feature toggle (или feature switcher) и управлять ими из удобного графического интерфейса.

к сведению

Для работы RuStore Remote Config необходима зарегистрированная учётная запись разработчика.

Как подключиться к Remote Config

Выполните настройки по шагам ниже, чтобы начать использовать сервис.

Шаг 1. Подключение SDK

  1. Подключите репозиторий и зависимости.
repositories {
maven {
url = uri("https://artifactory-external.vkpartner.ru/artifactory/maven")
}
}
...
dependencies {
implementation("ru.rustore.sdk:remoteconfig:1.1.1")
}
  1. Добавьте код в файл Application.kt, где происходит инициализация приложения.
import android.app.Application
import ru.rustore.sdk.remoteconfig.Account
import ru.rustore.sdk.remoteconfig.AppId
import ru.rustore.sdk.remoteconfig.ConfigRequestParameter
import ru.rustore.sdk.remoteconfig.ConfigRequestParameterProvider
import ru.rustore.sdk.remoteconfig.RemoteConfigClientBuilder
import ru.rustore.sdk.remoteconfig.UpdateBehaviour
class Application : Application() {
override fun onCreate() {
super.onCreate()
RemoteConfigClientBuilder(
appId = AppId("Ваш APP_ID"),
context = applicationContext
)
.setConfigRequestParameterProvider(
ConfigRequestParameterProviderImpl()
)
.setUpdateBehaviour(UpdateBehaviour.Actual)
.build()
.init()
}
}
class ConfigRequestParameterProviderImpl : ConfigRequestParameterProvider {
override fun getConfigRequestParameter(): ConfigRequestParameter =
ConfigRequestParameter(
account = Account(value="testUser"),
)
}
  1. Настройте получение конфигурации.
import ru.rustore.sdk.remoteconfig.RemoteConfigClient
...
RemoteConfigClient.instance.getRemoteConfig()
...
подсказка

Приложение готово к взаимодействию с Remote Config. Настройте параметры и добавьте их в код приложения.

Шаг 2. Настройка параметра

Параметр – это переменная, которую нужно добавить в код приложения. После настройки параметр можно изменить удалённо.

  • Создайте параметр в интерфейсе Remote Config.
к сведению

На данном этапе можно пропустить функционал тестирования.

  1. Впишите в поле «Ключ» значение «background».
  2. Выберите тип значение «string».
  3. Заполните произвольно поле «Описание».
  4. В поле «значение по умолчанию» снимите выбор с «Нет значения» и впишите строку «green».
  5. Нажмите «Создать».
  6. На странице параметра нажмите «Запустить тест», а затем «Подтвердить».
  • Встройте созданный параметр в код приложения.
import android.util.Log
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonColors
import androidx.compose.material3.ButtonDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import ru.rustore.remoteconfigexample.ui.theme.RemoteConfigExampleTheme
import ru.rustore.sdk.remoteconfig.RemoteConfigClient
class MainActivity : ComponentActivity() {
val GREEN_COLOR = "green"
val BLUE_COLOR = "blue"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val color = mutableStateOf(Color(0xFFFFFFFF))
setContent {
LaunchedEffect(true) {
RemoteConfigClient.instance
.getRemoteConfig()
.addOnSuccessListener { rc ->
Log.i(
"RemoteConfigClient",
rc.getString("background")
)
color.value = when (rc.getString("background")) {
GREEN_COLOR ->
Color(0xFF4BB34B)
BLUE_COLOR ->
Color(0xFF2688EB)
else ->
Color(0xFFFFFFFF)
}
}
}
RemoteConfigExampleTheme {
Surface(modifier = Modifier.fillMaxSize()) {
Column() {
Greeting("Android")
Button(
"Click me",
ButtonDefaults.buttonColors(containerColor = color.value)
)
}
}
}
}
}
}
@Composable
fun Button(text: String, colors: ButtonColors) {
Text(
text = "Hello $name!",
modifier = modifier
)
}
@Composable
fun Button(text: String, colors: ButtonColors) {
Button(
onClick = { },
content = { Text( text = text ) },
colors = colors,
)
}
  • Проверьте, что новая логика работает:
  1. При запуске код должен отрисовать кнопку с текстом «Click me» зелёного цвета.
  2. Для дополнительной проверки измените зачение по умолчанию на «blue». Кнопка должна окраситься в синий цвет.
подсказка

SDK и параметры настроены. Можно реализовать дополнительную логику с помощью условий.

Шаг 3. Настройка условий

Условия нужны для гибкой раскатки параметров на определённую аудиторию.

  • Создайте условие в интерфейсе Remote Config.
  1. В поле «Название» впишите «Условие по account».
  2. Заполните произвольно поле «описание».
  3. В блоке «Атомарные условия» выберите «Account» в качестве значения.
  4. Затем выберите «Операция» — «Exactly matches».
  5. В поле «Account» впишите «testUser».
  6. Нажмите кнопку «Создать».
  7. Нажмите кнопку «Подтвердить» в экране созданного условия.
  • Добавьте созданное условие в параметр «background».
  1. Перейдите в редактирование параметра.
  2. В блоке «Условия» нажмите на «Добавить условие» и впишите «account» в строку поиска. Выберите найденное значение.
  3. Снимите выбор «Нет значения» возле добавленного условия.
  4. Впишите в поле «account» строку «blue».
  5. В качестве значения по умолчанию укажите строку «green».
  6. Нажмите кнопку «Редактировать».
  7. Нажмите кнопку «Запустить тест», а затем «Подтвердить» на экране параметра.
  • Проверьте, что новая логика работает.

После добавления условия, которое завязано на тестовый идентификатор пользователя «testUser» кнопка должна стать синей.

подсказка

Параметр меняет свое значение в зависимости от настроенных условий.

Шаг 4. MyTracker

Для отслеживания кликов по кнопке выполните следующие шаги:

к сведению

Убедитесь, что вы предварительно подключили и настроили SDK MyTracker к коду приложения.

import com.my.tracker.MyTracker
MyTracker.getTrackerParams()
.setCustomUserId("testUser")
MyTracker.initTracker("ВАШ_SDK_КЛЮЧ", this)
  • Добавьте отслеживание конверсии.

Вот как это сделать, если нужна конверсия из просмотра экрана в клик:

  1. Настройте отправку двух событий.
  2. Назовите первое событие «page.view». Оно будет отправляться при посещении пользователем экрана.
  3. Добавьте событие в код приложения.
  4. Добавьте обработку нажатия на кнопку, которая будет отправлять второе событие с именем «button.click».
import com.my.tracker.MyTracker
...
class MainActivity : ComponentActivity() {
MyTracker.trackEvent("example.page.view")
...
@Composable
fun Button(text: String, colors: ButtonColors) {
Button(
onClick = { MyTracker.trackEvent("example.button.click") },
content = { Text( text = text ) },
colors = colors,
)
}
  • Протестируйте приложение.

Вы можете изменить значение по умолчанию на другое и проверить, что конфигурация обновляется.

к сведению

Обратите внимание, что обновление параметра может занять до 5 минут.

  1. Перезапустите приложение, затем нажмите на кнопку.
  2. Убедитесь, что статистика по событиям приходит в MyTracker.

События в MyTracker приходят в течение нескольких часов.

подсказка

Параметр меняет свое значение в зависимости от настроенных условий.

Шаг 5. Метрика

Метрику можно создать после получения данных по событию в MyTracker.

  • Создайте метрику.
Метрики
Метрики показывают, как пользователи реагируют на измеения в рамках эксперимента. Например, с их помощью вы можете отследить, увеличилась ли конверсия в приложении.
  1. Выберите раздел «Метрики» в боковом меню Remote Config.
  2. Нажмите кнопку «Создать».
  • Добавьте данные.

Например, чтобы отследить конверсию из просмотра экрана в клик:

  1. Настройте отправку двух событий.

  2. Назовите метрику «Клики по кнопке».

  3. Выберите тип метрики «Hits per Uniqs».

  4. Отследите среднее количество уникальных пользователей, кликнувших по кнопке.

  • Добавьте события.

Вы можете изменить значение по умолчанию на другое и проверить, что конфигурация обновляется.

к сведению

Обратите внимание, что обновление параметра может занять до 5 минут.

  1. В блоке первого события укажите название «page.view».

  2. Во втором блоке укажите название «button.click».

  • Нажимите кнопку «Создать».
подсказка

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

Шаг 6. Эксперименты

Запустите эксперимент после подключения MyTracker и добавления метрики.

  • Создайте эксперимент.
  1. Выберите раздел «Эксперименты» в боковом меню Remote Config.
  2. Нажмите кнопку «Создать».
  • Добавьте данные.
  1. Укажите название эксперимента. Например, «Тест новой кнопки».
  2. Заполните описание эксперимента.
  • Определите сегмент пользователей.
Сегментирование пользователей
Вы можете сегментировать пользователей по модели устройств или аккаунтам. Второй вариант подойдёт, если у вас несколько способов регистрации в приложении (например, по номеру телефона и по VK ID).

Есть и другой способ сегментирования. Чтобы раскатить изменения на разные не пересекающиеся группы пользователей, используйте параметр Salt. Принцип его работы выглядит так: значение параметра закрепляется за указанными персентилями пользователей. Это происходит даже в том случае, если значение остаётся пустым.

Например, вы указали значение Salt 1 для эксперимента на 5% пользователей, выбрав 10-15 персентилей. При создании нового эксперимента, уже на 10% пользователей, вы можете указать значение 2 и изменить персентили, чтобы аудитория двух экспериментов не пересекалась.

  1. Укажите процент и параметр Salt.
  2. Выберите условия для указанных персентилей (см. Условия).
  • Настройте варианты эксперимента.
  1. Укажите названия для двух вариантов эксперимента.
  2. Укажите параметр кода для каждого из вариантов.
  • Добавьте параметр.
  1. Нажмите кнопку «+ Параметр».
  2. Укажите параметр background.
  • Укажите значение параметра.
  1. Напишите red для варианта с красной кнопкой.
  2. Напишите green для варианта с зелёной кнопкой.
  • Добавьте время.
  1. Укажите дату старта через 5 минут от текущего времени.
  2. Укажите дату окончания вовлечения через неделю от текущего времени.
  3. Укажите дату окончания эксперимента также через неделю от текущего времени.
к сведению

Эксперимент не запустится до тех пор, пока вы не протестируете варианты.

  • Нажимите кнопку «Создать».
подсказка

Создан эксперимент с двумя вариантами. В рамках эксперимента будет считаться метрика «Клики по кнопке».

Шаг 7. Тестирование вариантов

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

Тест вариантов
Тестирование вариантов помогает предварительно понять, как будут выглядеть изменения, которые вы запланировали. С помощью теста можно сравнить результаты разных изменений. Например, вы можете проверить, как будет выглядеть экран вашего приложения с разными цветами кнопки.
  • Запустите тест.

Нажмите кнопку «Запустить тест».

  • Подтвердите варианты.

Подтвердите действие кнопкой у блока вариантов.

подсказка

Варианты протестированы и подтверждены. Эксперимент запустится в указанную дату старта.

Шаг 8. Анализ результатов

  • Проверьте участников.

Если на предыдущих шагах всё сделано верно, вы увидите, как на странице со списком экспериментов в столбце «Участники» начнёт расти число пользователей, задействованных в эксперименте.

  • Проверьте результаты по метрикам.

Первые результаты по метрикам будут доступны на следующий день.

  • Посмотрите изменения метрики в разрезе вариантов.

  • Дождитесь окончания эксперимента.

Вы также можете досрочно остановить его, если соберёте достаточно данных.

подсказка

Вы прошлись по основным этапам заведения эксперимента и запустили его. После окончания эксперимента вы можете проанализировать результаты.