RuStore Remote Config: основы, быстрый старт и руководство по управлению конфигурацией
RuStore Remote Config — инструмент для управления конфигурацией мобильных приложений. Позволяет реализовать функции feature toggle (или feature switcher) и управлять ими из удобного графического интерфейса.
Для работы RuStore Remote Config необходима зарегистрированная учётная запись разработчика.
Как подключиться к Remote Config
Выполните настройки по шагам ниже, чтобы начать использовать сервис.
Шаг 1. Подключение SDK
- Подключите репозиторий и зависимости.
repositories {
maven {
url = uri("https://artifactory-external.vkpartner.ru/artifactory/maven")
}
}
...
dependencies {
implementation("ru.rustore.sdk:remoteconfig: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"),
)
}
- Настройте получение конфигурации.
import ru.rustore.sdk.remoteconfig.RemoteConfigClient
...
RemoteConfigClient.instance.getRemoteConfig()
...
Приложение готово к взаимодействию с Remote Config. Наст ройте параметры и добавьте их в код приложения.
Шаг 2. Настройка параметра
Параметр – это переменная, которую нужно добавить в код приложения. После настройки параметр можно изменить удалённо.
- Создайте параметр в интерфейсе Remote Config.
На данном этапе можно пропустить функционал тестирования.
- Впишите в поле «Ключ» значение «background».
- Выберите тип значение «string».
- Заполните произвольно поле «Описание».
- В поле «значение по умолчанию» снимите выбор с «Нет значения» и впишите строку «green».
- Нажмите «Создать».
- На странице параметра нажмите «Запустить тест», а затем «Подтвердить».
- Встройте созданный параметр в код приложения.
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,
)
}
- Проверьте, что новая логика работает:
- При запуске код должен отрисовать кнопку с текстом «Click me» зелёного цвета.
- Для дополнительной проверки измените зачение по умолчанию на «blue». Кнопка должна окраситься в синий цвет.
SDK и параметры настроены. Можно реализовать дополнительную логику с помощью условий.
Шаг 3. Настройка условий
Условия нужны для гибкой раскатки параметров на определённую аудиторию.
- Создайте условие в интерфейсе Remote Config.