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

React Native Client SDK

Установка

npm install @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(...) принимает обязательный, строковый параметр - название фича-флага. Используется для проверки доступности определённой фичи.

Логика работы:

  1. Если в конфигурации существует эксперимент с таким же названием фича-флага, метод проверит условия эксперимента, назначит группу и вернет значение условия (или значение группы по умолчанию) эксперимента.
  2. Если эксперимент с таким названием не найден в конфигурации, или пользователь не попал в условия эксперимента но переданное название 'фича-флага' существует, метод вернет значение условия фича-флага (или значение 'фича-флага' по умолчанию).
  3. Если в конфигурации не найден фича флаг с переданным параметром, метод вернет 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) {
// обработка ошибки
}