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.
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.
El plugin delega a los SDKs nativos subyacentes:
- El plugin abre la cámara (Android o iOS) con la superposición SmartFrame.
- El SDK nativo guía al usuario para posicionar su rostro dentro del marco.
- Valida el liveness — la sesión solo se completa cuando el usuario está físicamente presente.
- Devuelve un objeto
ResultCameraconbase64yencrypted(JWT) a través del canal de plataforma.
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();
Paso 1 — Implementar UnicoListener
UnicoListener gestiona los callbacks del ciclo de vida del SDK. Implemente los cuatro métodos obligatorios:
| Método | Cuá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() {}
}
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é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 |
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);
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.