Trisigma.initialize
suspend fun initialize(
context: Context,
key: String,
tag: String,
participant: TrisigmaParticipant?,
options: TrisigmaOptions,
): TrisigmaClient
Создаёт клиент Trisigma, загружает начальную конфигурацию экспериментов и запускает фоновые задачи SDK. SDK разрешает создать только один клиент для каждой пары host и tag.
Параметры
| Параметр | Тип | Обязательность | Пример | Описание |
|---|---|---|---|---|
context | Context | Да | applicationContext | Контекст Android для локального хранилища и WorkManager. |
key | String | Да | "project-key" | Ключ авторизации Trisigma. |
tag | String | Да | "checkout" | Тег для фильтрации конфигурации экспериментов. Например, тег ограничивает конфигурацию экспериментами вашего приложения. |
participant | TrisigmaParticipant? | Да | TrisigmaParticipant(userId = 42L) | Участник эксперимента. |
options | TrisigmaOptions | Да | TrisigmaOptions(host = ..., platformVersion = ...) | Адрес сервера, версия приложения, интервалы, кеш, очередь экспозиций и логирование. |
TrisigmaParticipant
TrisigmaParticipant описывает участника эксперимента. Все поля структуры необязательны. Если participant или visitorId равен null, SDK создаёт стабильный visitorId и сохраняет его между запусками приложения.
| Параметр | Тип | Обязательность | По умолчанию | Пример | Описание |
|---|---|---|---|---|---|
userId | Long? | Нет | null | 42L | Стабильный идентификатор авторизованного пользователя. |
visitorId | String? | Нет | null | "device-7f3a" | Идентификатор анонимного пользователя. Если значение не задано, SDK создаёт его автоматически. |
attributes | Map<String, String> | Нет | emptyMap() | mapOf("city" to "moscow") | Атрибуты пользователя для фильтрации аудитории эксперимента. |
TrisigmaOptions
TrisigmaOptions задаёт подключение к Splitter, кеширование, фоновые обновления, отправку экспозиций и логирование. host и platformVersion обязательны. Значения интервалов и exposureQueueMaxSize должны быть положительными.
| Параметр | Тип | Обязательность | По умолчанию | Пример | Описание |
|---|---|---|---|---|---|
host | String | Да | - | | Базовый URL Splitter. SDK удаляет завершающий /. |
platformVersion | String | Да | - | "1.0.0" | Версия приложения в формате semver. |
sourceName | String? | Нет | null | "checkout-app" | Значение заголовка X-Source. SDK использует имя приложения или package name, если значение не задано. |
cacheTTL | Duration | Нет | 24.hours | 12.hours | Срок актуальности сохранённой конфигурации экспериментов. |
cacheEnabled | Boolean | Нет | true | false | Включает сохранение конфигурации экспериментов на устройстве. |
requestTimeout | Duration | Нет | 1.seconds | 2.seconds | Общий тайм-аут HTTP-вызова. |
featuresRefreshInterval | Duration | Нет | 3.minutes | 5.minutes | Интервал обновления конфигурации экспериментов. |
exposureQueueMaxSize | Int | Нет | 50 | 100 | Количество экспозиций в очереди до автоматической отправки. |
exposureFlushInterval | Duration | Нет | 30.seconds | 1.minutes | Интервал автоматической отправки экспозиций. |
shutdownTimeout | Duration | Нет | 5.seconds | 10.seconds | Максимальное время выполнения flush() внутри shutdown(). |
logLevel | TrisigmaLogLevel | Нет | TrisigmaLogLevel.Error | TrisigmaLogLevel.Debug | Минимальный уровень логирования: None, Error, Warning или Debug. |
logHandler | ((TrisigmaLogLevel, String) -> Unit)? | Нет | null | ::handleTrisigmaLog | Пользовательский обработчик логов. При null SDK использует Android Log. |
Возвращаемое значение
| Тип | Описание |
|---|---|
TrisigmaClient | Инициализированный клиент. При HTTP-ошибке или тайм-ауте первой загрузки SDK возвращает клиент в режиме fail-open. |
Клиент в режиме fail-open продолжает работать. Метод checkFeature возвращает defaultGroup, а SDK записывает ошибку первой загрузки в лог.
Ошибки
| Ошибка | Когда возникает |
|---|---|
TrisigmaException.Validation | key или tag пустой; host некорректен; platformVersion не semver; числовая опция неположительная. |
TrisigmaException.DuplicateClient | Клиент для той же пары host и tag уже зарегистрирован. |
IOException | Низкоуровневая ошибка соединения, кроме тайм-аута. |
TrisigmaException.InternalSigmaException | Успешный HTTP-ответ не содержит тела. |
SerializationException | Тело успешного HTTP-ответа не соответствует ожидаемой JSON-модели. |
SDK не передаёт в вызывающий код HTTP-ошибки первой загрузки и тайм-аут. Другие ошибки из таблицы завершают initialize исключением.
Использование
import io.trisigma.sdk.external.Trisigma
import io.trisigma.sdk.external.models.TrisigmaOptions
import io.trisigma.sdk.external.models.TrisigmaParticipant
val client = Trisigma.initialize(
context = context,
key = "project-key",
tag = "checkout",
participant = TrisigmaParticipant(userId = 42L),
options = TrisigmaOptions(
host = "https://client.example.trisigma.io",
platformVersion = "1.0.0",
),
)
initialize - suspend-функция. Вызывайте её из корутины.