---
title: Liveness (selfie biométrica)
canonical: https://developer.unico.io/es/dual-api/developers/sdks-and-tools/flutter/capture-flow/capture-types/liveness
locale: es
generated_by: markdown-export
---

Captura de selfie biométrica con verificación de liveness integrada. El SDK guía al usuario hasta obtener un frame biométricamente válido mediante SmartFrames y devuelve la imagen en Base64 + JWT.

:::secondary[Capacidad]
Este tipo de captura utiliza la capacidad **Liveness**. Para una descripción conceptual de cómo funciona Liveness, consulte la página de la capacidad Liveness.
:::

## Cómo funciona

El plugin delega a los SDKs nativos subyacentes:

1. El plugin abre la cámara (Android o iOS) con la superposición SmartFrame.
2. El SDK nativo guía al usuario para posicionar su rostro dentro del marco.
3. Valida el liveness — la sesión solo se completa cuando el usuario está físicamente presente.
4. Devuelve un objeto `ResultCamera` con `base64` y `encrypted` (JWT) a través del canal de plataforma.

## Modo de cámara (captura inteligente)

El SDK tiene **encuadre inteligente** y **captura automática** habilitados por defecto. Configure el modo de cámara en su builder de la siguiente manera:

```dart
UnicoCheckCameraOpener _opener = _unicoCheck
    .setAutoCapture(autoCapture: true)
    .setSmartFrame(smartFrame: true)
    .build();
```

## Iniciar una captura de liveness

****Paso 2** — Implementar los listeners de selfie en `UnicoSelfie`**

Agregue los callbacks de selfie a su clase de estado:

  | Método | Descripción |
  |---|---|
  | `onSuccessSelfie(ResultCamera result)` | Captura exitosa — devuelve `ResultCamera` con `base64` (vista previa) y `encrypted` (JWT para la API) |
  | `onErrorSelfie(UnicoError error)` | Captura fallida — devuelve un `UnicoError` con código y descripción |

  :::warning[Expiración del token]
  El intervalo entre la generación de `encrypted` y su envío a la API no debe superar **10 minutos**.
  :::

  ```dart
  class _MyHomePageState extends State<MyHomePage>
      implements UnicoSelfie {

    @override
    void onSuccessSelfie(ResultCamera result) { }

    @override
    void onErrorSelfie(UnicoError error) { }

  }
  ```

****Paso 3** — Llamar a `openCameraSelfie`**

El método `openCameraSelfie` abre la cámara. Recibe la implementación del listener `UnicoSelfie`:

  ```dart
  _opener.openCameraSelfie(listener: this);
  ```

## Recopilación de datos de monitoreo

El método `openCameraSelfie` proporciona una sobrecarga que acepta metadatos a través de `UnicoCheckPrepareInfo` para ayudar a identificar la sesión del usuario y el flujo:

- `externalUserId` (String, **requerido**) — Identificador del usuario dentro de su sistema. Se hashea automáticamente con SHA-256 antes de la transmisión.
- `useCase` (String, opcional) — Identificador del contexto o flujo que se está ejecutando actualmente. Se transmite en texto plano.

```dart
_opener.openCameraSelfie(
  listener: this,
  prepareInfo: UnicoCheckPrepareInfo(
    externalUserId: 'external_user_id',
    useCase: 'use_case', // optional
  ),
);
```

Para el manejo completo del resultado, consulte [Recibir el resultado](/developers/sdks-and-tools/flutter/capture-flow/receiving-the-result).