---
title: Liveness (биометрическое селфи)
description: Захват биометрического селфи со встроенной проверкой liveness, возвращающий захваченный кадр в формате Base64 и JWT.
canonical: https://developer.unico.io/ru/dual-api/developers/sdks-and-tools/ios/capture-flow/capture-types/liveness
locale: ru
generated_by: markdown-export
---

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

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

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

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

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

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

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

### Swift

  ```swift
  unicoCheck.setSmartFrame(true)
  unicoCheck.setAutoCapture(true)
  ```

### Objective-C

  ```objectivec
  [unicoCheck setSmartFrame:true];
  [unicoCheck setAutoCapture:true];
  ```

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

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

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

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

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

  ### Swift

    ```swift
    class ViewController: UIViewController, AcessoBioManagerDelegate,
      SelfieCameraDelegate, AcessoBioSelfieDelegate {

      func onSuccessSelfie(_ result: SelfieResult!) { }
      func onErrorSelfie(_ errorBio: ErrorBio!) { }
    }
    ```

### Objective-C

    ```objectivec
    // .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

    ```swift
    @IBAction func openCamera(_ sender: Any) {
      unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
    }

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

    func onCameraFailed(_ message: ErrorPrepare!) { }
    ```

### Objective-C

    ```objectivec
    - (IBAction)openCamera:(UIButton *)sender {
        [[unicoCheck build] prepareSelfieCamera:self config:[YourUnicoConfigClass new]];
    }

    - (void)onCameraReady:(id)cameraOpener {
        [cameraOpener open:self];
    }

    - (void)onCameraFailed:(ErrorPrepare *)message { }
    ```

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