Liveness (биометрическое селфи)
Захват биометрического селфи со встроенной проверкой liveness. SDK направляет пользователя до получения биометрически валидного кадра с помощью SmartFrames и возвращает из ображение в формате Base64 + JWT.
Данный тип захвата использует возможность Liveness. Концептуальный обзор работы Liveness см. на странице возможности Liveness.
SDK управляет всем сеансом захвата:
- Открывает камеру с наложением SmartFrame.
- Направляет пользователя для позиционирования лица в кадре.
- Проверяет liveness — сеанс завершается только при физическом присутствии пользователя.
- Возвращает объект
SelfieResult(псевдонимResultCamera) с полямиbase64иencrypted(JWT).
SDK имеет интеллектуальное кадрирование и автоматический захват, включённые по умолчанию. Настройте режим камеры в вашем строителе следующим образом:
- Swift
- Objective-C
unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
[unicoCheck setSmartFrame:true];
[unicoCheck setAutoCapture:true];
Шаг 1 — Реализуйте AcessoBioManagerDelegate
AcessoBioManagerDelegate обрабатывает обратные вызовы жизненного цикла SDK. Реализуйте четыре обязательных метода:
| Метод | Когда вызывается |
|---|---|
onErrorAcessoBioManager(error) | Произошла ошибка во время работы SDK |
onUserClosedCameraManually() | Пользователь вручную закрыл камеру |
onSystemClosedCameraTimeoutSession() | Достигнут 40-секундный лимит сеанса |
onSystemChangedTypeCameraTimeoutFaceInference() | Лицо не обнаружено в течение 13 секунд — переключается на ручной захват |
- Swift
- Objective-C
class ViewController: UIViewController, AcessoBioManagerDelegate {
var unicoCheck: AcessoBioManager!
override func viewDidLoad() {
super.viewDidLoad()
unicoCheck = AcessoBioManager(viewController: self)
}
func onErrorAcessoBioManager(_ error: ErrorBio!) { }
func onUserClosedCameraManually() { }
func onSystemClosedCameraTimeoutSession() { }
func onSystemChangedTypeCameraTimeoutFaceInference() { }
}
@implementation ViewController: UIViewController
- (void)viewDidLoad {
[super viewDidLoad];
unicoCheck = [[AcessoBioManager alloc]initWithViewController:self];
}
- (void)onErrorAcessoBioManager:(ErrorBio *)error { }
- (void)onSystemChangedTypeCameraTimeoutFaceInference { }
- (void)onSystemClosedCameraTimeoutSession { }
- (void)onUserClosedCameraManually { }
@end
Все четыре метода делегата, перечисленные выше, должны быть созданы в вашем проекте (даже без какой-либо логики). В противном случае проект не скомпилируется успешно.
Шаг 2 — Реализуйте SelfieCameraDelegate и AcessoBioSelfieDelegate
Эти делегаты обрабатывают обратные вызовы результатов захвата селфи:
| Метод | Описание |
|---|---|
onSuccessSelfie(result) | Захват выполнен успешно — возвращает SelfieResult с base64 (предпросмотр) и encrypted (JWT для API) |
onErrorSelfie(errorBio) | Захват не выполнен — возвращает ErrorBio с кодом и описанием |
Интервал между генерацией encrypted и его отправкой в API не должен превышать 10 минут.
- Swift
- Objective-C
class ViewController: UIViewController, AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate {
func onSuccessSelfie(_ result: SelfieResult!) { }
func onErrorSelfie(_ errorBio: ErrorBio!) { }
}
// .h
@interface ViewController: UIViewController <AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate> {
AcessoBioManager *unicoCheck;
}
// .m
- (void)onSuccessSelfie:(SelfieResult *)result {
NSLog(@"%@", result.base64);
}
- (void)onErrorSelfie:(ErrorBio *)errorBio { }
Шаг 3 — Вызовите prepareSelfieCamera и open
Вызовите prepareSelfieCamera, передав конфигурацию SDK. Когда камера готова, срабатывает событие onCameraReady с AcessoBioCameraOpenerDelegate — откройте камеру с помощью метода open():
onCameraReady(cameraOpener)— камера готова; вызовитеopen(self).onCameraFailed(message)— подготовка камеры заверши лась ошибкой (ErrorPrepareявляется расширениемErrorBio).
- Swift
- Objective-C
@IBAction func openCamera(_ sender: Any) {
unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
}
func onCameraReady(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {
cameraOpener.open(self)
}
func onCameraFailed(_ message: ErrorPrepare!) { }
- (IBAction)openCamera:(UIButton *)sender {
[[unicoCheck build] prepareSelfieCamera:self config:[YourUnicoConfigClass new]];
}
- (void)onCameraReady:(id)cameraOpener {
[cameraOpener open:self];
}
- (void)onCameraFailed:(ErrorPrepare *)message { }
Подробнее о сборе данных мониторинга см. Сбор данных мониторинга.
Для полной обработки результата см. Получение результата.