React Native Client SDK
Установка
- NPM
- Yarn
npm install @trisigma-tech/react-native
yarn add @trisigma-tech/react-native
Инициализация SDK
После установки необходимо инициализировать SDK, предоставив токен.
При инициализации следует передавать объект userData с максимальным количеством
данных о пользователе — это позволит использовать преимущества
расширенных условий и конфигурации (например, проверки на уровне страны или определённой операционной системы).
SDK полностью полагается на предоставленные данные пользователя для распределения экспер иментов и фича-флагов. Подробнее об атрибутах пользователя читайте здесь.
import Trisigma from "@trisigma-tech/react-native";
const token = <TOKEN>;
const trisigma = new Trisigma();
const userData = {
userId: 'userId', // например, clientId из счетчика google analytics
profileId: 'profileId', // например, ID пользователя при регистрации
deviceId: 'deviceId', // например, ID устройства с которого зашел пользователь
email: 'example@mail.ru',
custom: {
new_user: true,
level: 2
}
}
trisigma.init({ token, userData })
Метод init({...}) принимает объект, который содержит настройки конфигурации:
token: string- обязательный параметр, который можно получить из админ-панели при подключении проекта.userData?: object- объект с пользовательскими данными.cacheTTL?: number- метка вр емени (по умолчанию 10 секунд).api?: string- URL для API (по умолчанию https://api.expf.ru/api/v1/).fetchTimeout?: number- таймаут для внутренних запросов к API (по умолчанию 5000 миллисекунд).postfix?: string- для создания нескольких экземпляровTrisigma(по умолчанию '').
Обновление данных пользователя
В процессе взаимодействия с приложением можно изменять или удалять свойства
userData без повторной инициализации SDK.
Изменение свойств:
trisigma.editUserProperties()
.setUserId('userId')
.setCustomProperty({ 'new_user': false });
Удаление свойств:
trisigma.editUserProperties()
.removeUserId()
.removeCustomProperty('new_user');
Подробнее о методах редактирования свойств читайте здесь.
Работа с фича флагами
Метод checkFlag(...) принимает обязательный, строковый параметр - название фича-флага.
Используется для проверки доступности определённой фичи.
Логика работы:
- Если в конфигурации существует эксперимент с таким же названием
фича-флага, метод проверит условия эксперимента, назначит группу и вернет значение условия (или значение группы по умолчанию) эксперимента. - Если эксперимент с таким названием не найден в конфигурации, или пользователь не попал в условия эксперимента
но переданное название
'фича-флага'существует, метод вернет значение условияфича-флага(или значение'фича-флага'по умолчанию). - Если в конфигурации не найден фича флаг с переданным параметром, метод вернет
null.
Пример:
try {
const feature = await trisigma.checkFlag('flagName');
} catch {
// обработка ошибки
}
Работа с экспериментами
Метод getExperiment(...) принимает обязательный строковый параметр — идентификатор эксперимента.
Он проверяет наличие эксперимента и условия участия пользователя в эксперименте.
При выполнении условий пользователь будет назначен в группу эксперимента.
Для получения результата используйте один из методов объекта эксперимента:
getParamValue(id)— значение параметраgetFeatureValue(name)— значение фича-флагаgroupIndex— индекс группы
Пример:
try {
const experiment = await trisigma.getExperiment('exp_id');
const param = experiment.getParamValue('param_name');
const feature = experiment.getFeatureValue('ff_name');
const groupIndex = experiment.groupIndex;
} catch {
// обработка ошибки
}
Получение списка всех экспериментов пользователя
try {
const estimateHoldouts = false;
const allExperiments = await trisigma.getAllUserExperiments(estimateHoldouts);
} catch {
// обработка ошибки
}
Возвращает строку (название и индекс) в которые попал пользователь.
Если пользователь не попал ни в один эксперимент, вернет null
Параметр estimateHoldouts?: boolean (необязательный. По умолчанию true).
Если true - метод вернет все эксперименты, включая холдауты, в которые попал пользователь.
Если false - метод вернет только эксперименты, не являющиеся холдаутами.
По умолчанию true.
Получение списка фича флагов пользователя
try {
const featureFlags = await trisigma.getUserFeatureFlagsDetails();
} catch {
// обработка ошибки
}
Метод getUserFeatureFlagsDetails() вызывается без аргументов.
Возвращает список всех фича флагов пользователя, где каждый фича флаг представлен объектом с ключами name, value
Экземпляры класса trisigma
В случае, когда нужно провести эксперименты с разными userId или подключить несколько проектов (токенов),
можно создать несколько экземпляров класса Trisigma.
При создании дополнительных экземпляров необходимо передать
параметр postfix с уникальным строковым значением.
const token2 = <TOKEN_2>;
const trisigma2 = new Trisigma();
trisigma2.init({
token: token2,
postfix: 'test'
});
try {
const allExperiments = await trisigma2.getAllUserExperiments()
} catch {
// обработка ошибки
}
Полный пример
import Trisigma from "@trisigma-tech/react-native";
const trisigma = new Trisigma();
const token = 'token';
const userData = {
userId: 'userId',
email: 'example@mail.ru',
appVersion: '1.2.3',
ip: '70.123.12.84',
custom: {
cookieKey: "1",
example: false
},
}
try {
trisigma.init({
token,
userData,
}),
const applePay = await trisigma.getExperiment('exp_name').then((res) => res?.getParamValue('apple_pay'));
const pay = await trisigma.checkFlag('pay');
} catch (error) {
// обработка ошибки
}