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

Trisigma.initialize

suspend fun initialize(
context: Context,
key: String,
tag: String,
participant: TrisigmaParticipant?,
options: TrisigmaOptions,
): TrisigmaClient

Создаёт клиент Trisigma, загружает начальную конфигурацию экспериментов и запускает фоновые задачи SDK. SDK разрешает создать только один клиент для каждой пары host и tag.

Параметры

ПараметрТипОбязательностьПримерОписание
contextContextДаapplicationContextКонтекст Android для локального хранилища и WorkManager.
keyStringДа"project-key"Ключ авторизации Trisigma.
tagStringДа"checkout"Тег для фильтрации конфигурации экспериментов. Например, тег ограничивает конфигурацию экспериментами вашего приложения.
participantTrisigmaParticipant?ДаTrisigmaParticipant(userId = 42L)Участник эксперимента.
optionsTrisigmaOptionsДаTrisigmaOptions(host = ..., platformVersion = ...)Адрес сервера, версия приложения, интервалы, кеш, очередь экспозиций и логирование.

TrisigmaParticipant

TrisigmaParticipant описывает участника эксперимента. Все поля структуры необязательны. Если participant или visitorId равен null, SDK создаёт стабильный visitorId и сохраняет его между запусками приложения.

ПараметрТипОбязательностьПо умолчаниюПримерОписание
userIdLong?Нетnull42LСтабильный идентификатор авторизованного пользователя.
visitorIdString?Нетnull"device-7f3a"Идентификатор анонимного пользователя. Если значение не задано, SDK создаёт его автоматически.
attributesMap<String, String>НетemptyMap()mapOf("city" to "moscow")Атрибуты пользователя для фильтрации аудитории эксперимента.

TrisigmaOptions

TrisigmaOptions задаёт подключение к Splitter, кеширование, фоновые обновления, отправку экспозиций и логирование. host и platformVersion обязательны. Значения интервалов и exposureQueueMaxSize должны быть положительными.

ПараметрТипОбязательностьПо умолчаниюПримерОписание
hostStringДа-
"https://client.example.trisigma.io"
Базовый URL Splitter. SDK удаляет завершающий /.
platformVersionStringДа-"1.0.0"Версия приложения в формате semver.
sourceNameString?Нетnull"checkout-app"Значение заголовка X-Source. SDK использует имя приложения или package name, если значение не задано.
cacheTTLDurationНет24.hours12.hoursСрок актуальности сохранённой конфигурации экспериментов.
cacheEnabledBooleanНетtruefalseВключает сохранение конфигурации экспериментов на устройстве.
requestTimeoutDurationНет1.seconds2.secondsОбщий тайм-аут HTTP-вызова.
featuresRefreshIntervalDurationНет3.minutes5.minutesИнтервал обновления конфигурации экспериментов.
exposureQueueMaxSizeIntНет50100Количество экспозиций в очереди до автоматической отправки.
exposureFlushIntervalDurationНет30.seconds1.minutesИнтервал автоматической отправки экспозиций.
shutdownTimeoutDurationНет5.seconds10.secondsМаксимальное время выполнения flush() внутри shutdown().
logLevelTrisigmaLogLevelНетTrisigmaLogLevel.ErrorTrisigmaLogLevel.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.Validationkey или 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-функция. Вызывайте её из корутины.