---
title: Liveness (selfie biométrica)
description: Captura de selfie biométrica com verificação de liveness embarcada, retornando o frame capturado em Base64 e JWT.
canonical: https://developer.unico.io/pt-BR/dual-api/developers/sdks-and-tools/ios/capture-flow/capture-types/liveness
locale: pt-BR
generated_by: markdown-export
---

Captura de selfie biométrica com verificação de liveness embarcada. O SDK guia o usuário até que um frame biometricamente válido seja obtido via SmartFrames e retorna a imagem em Base64 + JWT.

:::secondary[Capability]
Este tipo de captura utiliza a capability **Liveness**. Para uma visão conceitual de como o Liveness funciona, consulte a página da capability Liveness.
:::

## Como funciona

O SDK gerencia toda a sessão de captura:

1. Abre a câmera com o overlay SmartFrame.
2. Guia o usuário para posicionar o rosto dentro do frame.
3. Valida o liveness — a sessão só é concluída quando o usuário está fisicamente presente.
4. Retorna um objeto `SelfieResult` (alias `ResultCamera`) com `base64` e `encrypted` (JWT).

## Modo de câmera (smart capture)

O SDK tem **enquadramento inteligente** e **captura automática** habilitados por padrão. Configure o modo de câmera no seu builder da seguinte forma:

### Swift

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

### Objective-C

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

## Iniciando uma captura liveness

****Passo 2** — Implemente `SelfieCameraDelegate` e `AcessoBioSelfieDelegate`**

Estes delegates tratam os callbacks de resultado da captura de selfie:

  | Método | Descrição |
  |---|---|
  | `onSuccessSelfie(result)` | Captura realizada com sucesso — retorna `SelfieResult` com `base64` (preview) e `encrypted` (JWT para a API) |
  | `onErrorSelfie(errorBio)` | Captura falhou — retorna um `ErrorBio` com código e descrição |

  :::warning[Expiração do token]
  O intervalo entre a geração do `encrypted` e o envio para a API não deve exceder **10 minutos**.
  :::

  ### 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 { }
    ```

****Passo 3** — Chame `prepareSelfieCamera` e `open`**

Chame `prepareSelfieCamera` passando a configuração do SDK. Quando a câmera estiver pronta, o evento `onCameraReady` é disparado com um `AcessoBioCameraOpenerDelegate` — abra a câmera pelo método `open()`:

  - `onCameraReady(cameraOpener)` — câmera pronta; chame `open(self)`.
  - `onCameraFailed(message)` — preparação da câmera falhou (`ErrorPrepare` é uma extensão de `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 { }
    ```

Para o tratamento completo do resultado, consulte [Recebendo o resultado](/developers/sdks-and-tools/ios/capture-flow/receiving-the-result).