Liveness (биометрическое селфи)
Захват биометрического селфи со встроенной проверкой liveness. SDK направляет пользователя до получения биометрически валидного кадра с помощью SmartFrames и возвращает изображение в формате Base64 + JWT.
Этот тип захвата использует возможность Liveness. Концептуальный обзор работы Liveness см. на странице соответствующей возможности.
Плагин делегирует управление базовым нативным SDK:
- Плагин открывает камеру (Android или iOS) с оверлеем SmartFrame.
- Нативный SDK направляет пользователя для расположения лица в рамке.
- Выполняется проверка liveness — сессия завершается только при физическом присутствии пользователя.
- Возвращает объект
ResultCameraсbase64иencrypted(JWT) через канал платформы.
В 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
Добавьте колбэки селфи в класс состояния:
| Метод | Описание |
|---|---|
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
),
);
Полное описание обработки результата см. в разделе Получение результата.