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

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

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

Возможность

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

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

SDK управляет всем сеансом захвата:

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

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

unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
совет

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

Запуск захвата liveness
Шаг 1 — Реализуйте AcessoBioManagerDelegate

AcessoBioManagerDelegate обрабатывает обратные вызовы жизненного цикла SDK. Реализуйте четыре обязательных метода:

МетодКогда вызывается
onErrorAcessoBioManager(error)Произошла ошибка во время работы SDK
onUserClosedCameraManually()Пользователь вручную закрыл камеру
onSystemClosedCameraTimeoutSession()Достигнут 40-секундный лимит сеанса
onSystemChangedTypeCameraTimeoutFaceInference()Лицо не обнаружено в течение 13 секунд — переключается на ручной захват
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() { }
}
Обязательные методы делегата

Все четыре метода делегата, перечисленные выше, должны быть созданы в вашем проекте (даже без какой-либо логики). В противном случае проект не скомпилируется успешно.

Шаг 2 — Реализуйте SelfieCameraDelegate и AcessoBioSelfieDelegate

Эти делегаты обрабатывают обратные вызовы результатов захвата селфи:

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

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

class ViewController: UIViewController, AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate {

func onSuccessSelfie(_ result: SelfieResult!) { }
func onErrorSelfie(_ errorBio: ErrorBio!) { }
}
Шаг 3 — Вызовите prepareSelfieCamera и open

Вызовите prepareSelfieCamera, передав конфигурацию SDK. Когда камера готова, срабатывает событие onCameraReady с AcessoBioCameraOpenerDelegate — откройте камеру с помощью метода open():

  • onCameraReady(cameraOpener) — камера готова; вызовите open(self).
  • onCameraFailed(message) — подготовка камеры завершилась ошибкой (ErrorPrepare является расширением ErrorBio).
@IBAction func openCamera(_ sender: Any) {
unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
}

func onCameraReady(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {
cameraOpener.open(self)
}

func onCameraFailed(_ message: ErrorPrepare!) { }
Сбор данных мониторинга

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

  • externalUserId (String, обязательный) — Идентификатор пользователя в вашей системе. Автоматически хешируется с помощью SHA-256 перед передачей.
  • useCase (String, необязательный) — Идентификатор контекста или потока, который выполняется в данный момент (например, "account_opening", "password_recovery"). Передаётся в открытом виде.
let prepareInfo = PrepareInfo(
externalUserId: "external_user_id",
useCase: "use_case"
)
unicoCheck.build().prepareSelfieCamera(
self,
config: YourUnicoConfigClass(),
prepareInfo: prepareInfo
)

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