SigmaSDK - Android
Sigma - это платформа для экспериментов, которая позволяет вам быстро оценивать влияние новых функций и предлагать продукты, которые нравятся вашим клиентам.
Требования
- Android API level 21+
Настройка Gradle
В файле build.gradle, который находится в корневой папке проекта, нужно добавить репозиторий jitpack. Для этого в конце списка репозиториев добавьте maven { url 'https://jitpack.io' }:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Если ваши репозитории для получения зависимостей объявлены в файле settings.gradle, то добавьте следующий код в dependencyResolutionManagement:
dependencyResolutionManagement {
...
repositories {
...
maven { url "https://jitpack.io" }
}
}
Затем добавьте следующую зависимость в файл build.gradle нужного вам модуля приложения (например, :app):
dependencies {
...
//SigmaSDK
implementation "ru.expf-team.sigma:kotlin-sdk:VERSION"
...
}
VERSION замените актуальной версией Sigma-SDK.
Инициализация SigmaSDK
Для инициализации SigmaSDK в классе, унаследованном от класса Application, в теле
переопределенного метода onCreate() добавьте вызов статического метода Sigma.initializeClient().
Данный метод принимает следующие параметры:
- application - объект класса приложения.
- projectToken - токен проекта (указан в панели управления).
- initialUserProperties - необязательный параметр, лямбда для назначения свойств пользователя.
- cacheTtlMillis - необязательный параметр, время жизни кеша полученного конфига из сети (по умолчанию равен 60 секундам, также если указать значение меньшее 10 секундам, то оно будет проигнорировано и будет использовано значение по умолчанию.).
- retryCount - необязательный параметр, количество повторных попыток запрашивания конфига при неудачном запросе (по умолчанию равен 3).
- tag - необязательный параметр, тег клиента Sigma (по умолчанию равен 'default'). Необходим для создания нескольких инстансов SigmaClient.
- sigmaJsonAdapter - необязательный параметр, адаптер, который будет использоваться при получении значений типа JSON в параметрах эксперимента и Feature Flag (по умолчанию равен SigmaGsonAdapter с конструктором по умолчанию).
- apiUrl - необязательный параметр, Web URL который используется SDK для запросов в сеть (по умолчанию равен https://api.expf.ru/api/v1).
Пример вызова метода:
import ru.expf.sigma.Sigma
...
Sigma.initializeClient(
application = this,
projectToken = "projectToken",
initialUserProperties = { setUserId("...") },
cacheTtlMillis = 20_000L,
retryCount = 10,
)
Получение объекта SigmaClient
Чтобы получить инстанс SigmaClient исполь зуется статический метод Sigma.getClient().
Данный метод принимает следующие параметры:
- tag - необязательный параметр, тег клиента Sigma (по умолчанию равен 'default').
Завершение работы клиента
Когда работа с клиентом завершена, рекомендуется освободить память от уже ненужного объекта SigmaClient. Для этого используется статический метод Sigma.removeClient().
Данный метод принимает следующие параметры:
- tag - необязательный параметр, тег клиента Sigma (по умолчанию равен 'default').
Пример создания нескольких клиентов Sigma
Инициализация:
import ru.expf.sigma.Sigma
...
const val TAG_1 = "TAG_1"
const val TAG_2 = "TAG_2"
...
Sigma.initializeClient(
application = this,
projectToken = "...",
tag = TAG_1,
)
Sigma.initializeClient(
application = this,
projectToken = "...",
tag = TAG_2,
)
Использование:
import ru.expf.sigma.*
...
val firstClient = Sigma.getClient(TAG_1)
val secondClient = Sigma.getClient(TAG_2)
...
async {
firstClient.getAllUserExperiments()
secondClient.checkFlag<Float>("...")
}.await()
...
firstClient.setUserProperties { setDeviceId("...") }