---
title: Liveness（生物特征自拍）
description: 内置活体验证的生物特征自拍采集,以 Base64 和 JWT 形式返回采集到的图像帧。
canonical: https://developer.unico.io/zh-CN/dual-api/developers/sdks-and-tools/ios/capture-flow/capture-types/liveness
locale: zh-CN
generated_by: markdown-export
---

通过内置活体验证进行生物特征自拍采集。SDK 通过 SmartFrames 引导用户，直至获取生物特征有效的图像帧，并以 Base64 + JWT 形式返回图像。

:::secondary[能力]
此采集类型使用 **Liveness** 能力。有关 Liveness 工作原理的概念性概述，请参阅 Liveness 能力页面。
:::

## 工作原理

SDK 管理完整的采集会话：

1. 以 SmartFrame 叠加层打开摄像头。
2. 引导用户将面部定位在框架内。
3. 验证活体——仅当用户实际在场时，会话才会完成。
4. 返回包含 `base64` 和 `encrypted`（JWT）的 `SelfieResult`（别名 `ResultCamera`）对象。

## 摄像头模式（智能采集）

SDK 默认启用**智能取景**和**自动采集**。在构建器中按如下方式配置摄像头模式：

### Swift

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

### Objective-C

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

## 启动活体采集

****步骤 2** — 实现 `SelfieCameraDelegate` 和 `AcessoBioSelfieDelegate`**

这些委托处理自拍采集结果回调：

  | 方法 | 描述 |
  |---|---|
  | `onSuccessSelfie(result)` | 采集成功——返回包含 `base64`（预览）和 `encrypted`（用于 API 的 JWT）的 `SelfieResult` |
  | `onErrorSelfie(errorBio)` | 采集失败——返回包含代码和描述的 `ErrorBio` |

  :::warning[Token 过期]
  生成 `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)。