Saltar al contenido principal

Liveness (selfie biométrica)

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.

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:

UnicoCheckCameraOpener _opener = _unicoCheck
.setAutoCapture(autoCapture: true)
.setSmartFrame(smartFrame: true)
.build();
Iniciar una captura de liveness
Paso 1 — Implementar UnicoListener

UnicoListener gestiona los callbacks del ciclo de vida del SDK. Implemente los cuatro métodos obligatorios:

MétodoCuándo se llama
onErrorUnico(error)Ocurrió un error durante la operación del SDK
onUserClosedCameraManually()El usuario cerró la cámara manualmente
onSystemClosedCameraTimeoutSession()Se alcanzó el límite de sesión de 40 segundos
onSystemChangedTypeCameraTimeoutFaceInference()No se detectó ningún rostro durante 13 segundos — cambia a captura manual
class _MyHomePageState extends State<MyHomePage> implements UnicoListener {
late UnicoCheckBuilder _unicoCheck;

@override
void onErrorUnico(UnicoError error) {}

@override
void onUserClosedCameraManually() {}

@override
void onSystemClosedCameraTimeoutSession() {}

@override
void onSystemChangedTypeCameraTimeoutFaceInference() {}
}
Métodos de listener obligatorios

Los cuatro métodos de listener anteriores deben crearse en su proyecto (incluso sin ninguna lógica). De lo contrario, el proyecto no compilará correctamente.

Paso 2 — Implementar los listeners de selfie en UnicoSelfie

Agregue los callbacks de selfie a su clase de estado:

MétodoDescripció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
Expiración del token

El intervalo entre la generación de encrypted y su envío a la API no debe superar 10 minutos.

@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:

_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.
_opener.openCameraSelfie(
listener: this,
prepareInfo: UnicoCheckPrepareInfo(
externalUserId: 'external_user_id',
useCase: 'use_case', // optional
),
);

Para el manejo completo del resultado, consulte Recibir el resultado.