---
title: Пользовательские сценарии
canonical: https://developer.unico.io/ru/developers/sdks-and-tools/flutter/capture-flow/user-journeys
locale: ru
generated_by: markdown-export
---

- [/ru/](/ru/)
- [SDK и инструменты](/ru/developers/sdks-and-tools/overview)
- [Flutter SDK](/ru/developers/sdks-and-tools/flutter/requirements)
- Процесс захвата
- Пользовательские сценарии

# Пользовательские сценарии

Пользовательские сценарии (User Journeys) — это многоэтапные сессии захвата, организуемые SDK совместно с настроенным потоком. Например, поток `idchecktrustdocssign` выполняет селфи + документ + подпись в рамках одной сессии.

ПродуктыДоступные сценарии зависят от потока, настроенного для вашей интеграции. Полное соответствие «продукт → поток → возможность» см. в разделе [Продукты](/ru/products).

Принцип работы
Плагин делегирует управление базовым нативным SDK:

1. Плагин открывает камеру (Android или iOS) с оверлеем SmartFrame.
2. Нативный SDK оркестрирует последовательность захватов, необходимых для потока (селфи, документ, подпись).
3. SDK самостоятельно передаёт результаты в Unico — клиент никогда не получает данные изображений напрямую и не управляет ими.
4. Возвращает объект `SuccessResult` с `processId` через канал платформы.

Оркестрация полностью выполняется SDK — вам не нужно реализовывать последовательность шагов в коде Dart.

Режим камеры (умный захват)
В SDK по умолчанию включены **интеллектуальное кадрирование** и **автоматический захват**. Настройте режим камеры в builder следующим образом:

```
UnicoCheckCameraOpener _opener = new UnicoCheck(this)**    .setAutoCapture(autoCapture: true)    .setSmartFrame(smartFrame: true)    .build();
```

Запуск пол ьзовательского сценария
**Шаг 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`.```
@overridevoid onSuccess(SuccessResult result) {  debugPrint('processId: ${result.processId}');}@overridevoid 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  ),);
```

Полное описание обработки результата см. в разделе [Получение результата](/ru/developers/sdks-and-tools/flutter/capture-flow/receiving-the-result).Последнее обновление 8 окт. 2026 г.**