Пользовательские сценарии
Пользовательские сценарии (User Journeys) — это многоэтапные сессии захвата, организуемые SDK совместно с настроенным потоком. Например, поток idchecktrustdocssign выполняет селфи + документ + подпись в рамках одной сессии.
Доступные сценарии зависят от потока, настроенного для вашей интеграции. Полное соответствие «вариант использования → поток → возможность» см. в разделе Варианты использования.
Плагин делегирует управление базовым нативным SDK:
- Плагин открывает камеру (Android или iOS) с оверлеем SmartFrame.
- Нативный SDK оркестрирует последовательность захватов, необходимых для потока (селфи, документ, подпись).
- SDK самостоятельно передаёт результаты в Unico — клиент никогда не получает данные изображений напрямую и не управляет ими.
- Возвращает объект
SuccessResultсprocessIdчерез канал платформы.
Оркестрация полностью выполняется SDK — вам не нужно реализовывать последовательность шагов в коде Dart.
В SDK по умолчанию включены интеллектуальное кадрирование и автоматический захват. Настройте режим камеры в builder следующим образом:
UnicoCheckCameraOpener _opener = new UnicoCheck(this)
.setAutoCapture(autoCapture: true)
.setSmartFrame(smartFrame: true)
.build();
Значения false/true для указанных методов не изменяют процесс захвата; они используются только для внутренней логики SDK.
Шаг 1 — Реализуйте UnicoListener
UnicoListener обрабатывает колбэки жизненного цикла SDK. Реализуйте четыре обязательных метода:
| Метод | Когда вызывается |
|---|---|
onErrorUnico(error) | Произошла ошибка в процессе работы SDK |
onUserClosedCameraManually() | Пользователь вручную закрыл камеру |
onSystemClosedCameraTimeoutSession() | Достигнут лимит сессии в 40 секунд |
onSystemChangedTypeCameraTimeoutFaceInference() | Лицо не обнаружено в течение 13 секунд — переключение на ручной захват |
class _MyHomePageState extends State<MyHomePage> implements UnicoListener {
late UnicoCheckBuilder _unicoCheck;
@override
void onErrorUnico(UnicoError error) {}
@override
void onUserClosedCameraManually() {}
@override
void onSystemClosedCameraTimeoutSession() {}
@override
void onSystemChangedTypeCameraTimeoutFaceInference() {}
}
Все четыре метода слушателя, перечисленные выше, должны быть созданы в вашем проекте (даже без какой-либо логики). В противном случае проект не скомпилируется успешно.
Шаг 2 — Реализуйте слушатели сценария на UnicoSelfie
Добавьте колбэки сценария в кла сс состояния:
| Метод | Описание |
|---|---|
onSuccess(SuccessResult result) | Захват выполнен успешно — возвращает SuccessResult с processId (Unico обрабатывает изображение внутренне) |
onErrorSelfie(UnicoError error) | Захват не удался — возвращает UnicoError с кодом и описанием |
В отличие от потока Liveness, колбэк User Journey не возвращает base64 или encrypted. Unico обрабатывает изображение внутренне и возвращает только processId.
@override
void onSuccess(SuccessResult result) {
debugPrint('processId: ${result.processId}');
}
@override
void onErrorSelfie(UnicoError error) { }
Шаг 3 — Вызовите openCameraSelfie
Метод openCameraSelfie открывает камеру. Для пользовательских сценариев передайте webAppToken, предоставленный Unico, вместо JSON-файла с учётными данными:
_opener.openCameraSelfie(
listener: this,
webAppToken: token,
);
Метод openCameraSelfie предоставляет перегрузку, принимающую метаданные через UnicoCheckPrepareInfo для идентификации пользовательской сессии и потока:
externalUserId(String, обязательный) — Идентификатор пользователя в вашей системе. Автоматически хешируется с помощью SHA-256 перед передачей.useCase(String, необязательный) — Идентификатор контекста или текущего выполняемого потока. Передаётся в открытом виде.
_opener.openCameraSelfie(
listener: this,
webAppToken: token,
prepareInfo: UnicoCheckPrepareInfo(
externalUserId: 'external_user_id',
useCase: 'use_case', // optional
),
);
Полное описание обработки результата см. в разделе Получ ение результата.