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

Liveness (биометрическое селфи)

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

Возможность

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

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

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

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

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

UnicoCheckCameraOpener _opener = new UnicoCheck(this)
.setAutoCapture(autoCapture: true)
.setSmartFrame(smartFrame: true)
.build();
совет

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

Запуск захвата liveness
Шаг 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

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

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

Интервал между созданием encrypted и его отправкой в API не должен превышать 10 минут.

@override
void onSuccessSelfie(ResultCamera result) { }

@override
void onErrorSelfie(UnicoError error) { }
Шаг 3 — Вызовите openCameraSelfie

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

_opener.openCameraSelfie(
jsonFileName: androidJsonFileName,
listener: this,
);
Сбор данных мониторинга

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

  • externalUserId (String, обязательный) — Идентификатор пользователя в вашей системе. Автоматически хешируется с помощью SHA-256 перед передачей.
  • useCase (String, необязательный) — Идентификатор контекста или текущего выполняемого потока. Передаётся в открытом виде.
_opener.openCameraSelfie(
jsonFileName: androidJsonFileName,
listener: this,
prepareInfo: UnicoCheckPrepareInfo(
externalUserId: 'external_user_id',
useCase: 'use_case', // optional
),
);

Полное описание обработки результата см. в разделе Получение результата.