---
title: Liveness (биометрическое селфи)
canonical: https://developer.unico.io/ru/dual-api/developers/sdks-and-tools/flutter/capture-flow/capture-types/liveness
locale: ru
generated_by: markdown-export
---

Захват биометрического селфи со встроенной проверкой liveness. SDK направляет пользователя до получения биометрически валидного кадра с помощью SmartFrames и возвращает изображение в формате Base64 + JWT.

:::secondary[Возможность]
Этот тип захвата использует возможность **Liveness**. Концептуальный обзор работы Liveness см. на странице соответствующей возможности.
:::

## Принцип работы

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

1. Плагин открывает камеру (Android или iOS) с оверлеем SmartFrame.
2. Нативный SDK направляет пользователя для расположения лица в рамке.
3. Выполняется проверка liveness — сессия завершается только при физическом присутствии пользователя.
4. Возвращает объект `ResultCamera` с `base64` и `encrypted` (JWT) через канал платформы.

## Режим камеры (умный захват)

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

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

:::tip
Значения `false`/`true` для указанных методов не изменяют процесс захвата; они используются только для внутренней логики SDK.
:::

## Запуск захвата liveness

****Шаг 2** — Реализуйте слушатели селфи на `UnicoSelfie`**

Добавьте колбэки селфи в класс состояния:

  | Метод | Описание |
  |---|---|
  | `onSuccessSelfie(ResultCamera result)` | Захват выполнен успешно — возвращает `ResultCamera` с `base64` (предпросмотр) и `encrypted` (JWT для API) |
  | `onErrorSelfie(UnicoError error)` | Захват не удался — возвращает `UnicoError` с кодом и описанием |

  :::warning[Срок действия токена]
  Интервал между созданием `encrypted` и его отправкой в API не должен превышать **10 минут**.
  :::

  ```dart
  class _MyHomePageState extends State<MyHomePage>
      implements UnicoSelfie {

    @override
    void onSuccessSelfie(ResultCamera result) { }

    @override
    void onErrorSelfie(UnicoError error) { }

  }
  ```

****Шаг 3** — Вызовите `openCameraSelfie`**

Метод `openCameraSelfie` открывает камеру. Он принимает реализацию слушателя `UnicoSelfie` и JSON-файл с учётными данными, созданный на предыдущем шаге:

  ```dart
  _opener.openCameraSelfie(
    jsonFileName: androidJsonFileName,
    listener: this,
  );
  ```

## Сбор данных мониторинга

Метод `openCameraSelfie` предоставляет перегрузку, принимающую метаданные через `UnicoCheckPrepareInfo` для идентификации пользовательской сессии и потока:

- `externalUserId` (String, **обязательный**) — Идентификатор пользователя в вашей системе. Автоматически хешируется с помощью SHA-256 перед передачей.
- `useCase` (String, необязательный) — Идентификатор контекста или текущего выполняемого потока. Передаётся в открытом виде.

```dart
_opener.openCameraSelfie(
  jsonFileName: androidJsonFileName,
  listener: this,
  prepareInfo: UnicoCheckPrepareInfo(
    externalUserId: 'external_user_id',
    useCase: 'use_case', // optional
  ),
);
```

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