Liveness (selfie biométrica)
Captura de selfie biométrica con verificación de liveness incorporada. El SDK guía al usuario hasta obtener un fotograma biométricamente válido mediante SmartFrames y devuelve la imagen como Base64 + JWT (JSON Web Token — un payload firmado que se envía a tu backend para llamar a la API REST).
Este tipo de captura utiliza la capability Liveness. Para una descripción conceptual del funcionamiento de Liveness, consulta la página de la capability Liveness.
El SDK gestiona la sesión de captura completa:
- Abre la cámara con la superposición SmartFrame.
- Guía al usuario para que posicione 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).
Paso 1 — Implementar AcessoBioListener
AcessoBioListener gestiona los callbacks del ciclo de vida del SDK. Implemente los cuatro métodos obligatorios:
| Método | Cuándo se llama |
|---|---|
onErrorAcessoBio(errorBio) | Ocurrió un error durante la operación del SDK |
onUserClosedCameraManually() | El usuario cerró la cámara manualmente |
onSystemClosedCameraTimeoutSession() | Se alcanzó el límite de tiempo de sesión — ver Límites de sesión |
onSystemChangedTypeCameraTimeoutFaceInference() | Se alcanzó el límite de tiempo de inferencia facial — cambia a captura manual — ver Límites de sesión |
- Kotlin
- Java
val callback = object : AcessoBioListener {
override fun onErrorAcessoBio(errorBio: ErrorBio?) { }
override fun onUserClosedCameraManually() { }
override fun onSystemClosedCameraTimeoutSession() { }
override fun onSystemChangedTypeCameraTimeoutFaceInference() { }
}
AcessoBioListener callback = new AcessoBioListener() {
@Override
public void onErrorAcessoBio(ErrorBio errorBio) { }
@Override
public void onUserClosedCameraManually() { }
@Override
public void onSystemClosedCameraTimeoutSession() { }
@Override
public void onSystemChangedTypeCameraTimeoutFaceInference() { }
};
Paso 2 — Implementar iAcessoBioSelfie
iAcessoBioSelfie gestiona los callbacks del resultado de captura de selfie:
| Método | Descripción |
|---|---|
onSuccessSelfie(result) | Captura exitosa — devuelve ResultCamera con base64 (vista previa) y encrypted (JWT para la API) |
onErrorSelfie(errorBio) | Captura fallida — devuelve un ErrorBio con código y descripción |
El intervalo entre la generación de encrypted y su envío a la API no debe superar los 10 minutos.
- Kotlin
- Java
val selfieListener = object : iAcessoBioSelfie {
override fun onSuccessSelfie(result: ResultCamera?) { }
override fun onErrorSelfie(errorBio: ErrorBio?) { }
}
iAcessoBioSelfie selfieListener = new iAcessoBioSelfie() {
@Override
public void onSuccessSelfie(ResultCamera result) { }
@Override
public void onErrorSelfie(ErrorBio errorBio) { }
};
Paso 3 — Llamar a prepareCamera
Con unicoCheckCamera inicializado y ambos listeners implementados, llama a prepareCamera pasando la configuración del SDK (el UnicoConfig creado en Inicialización) y un SelfieCameraListener:
onCameraReady— la cámara está lista; llama aopenpasando elselfieListenerdel Paso 2.onCameraFailed— la preparación de la cámara falló; gestiona el mensaje de error.
- Kotlin
- Java
unicoCheckCamera
.prepareCamera(UnicoConfig(), object : SelfieCameraListener {
override fun onCameraReady(cameraOpener: UnicoCheckCameraOpener.Selfie?) {
cameraOpener?.open(selfieListener)
}
override fun onCameraFailed(message: String?) { }
})
unicoCheckCamera
.prepareCamera(new UnicoConfig(), new SelfieCameraListener() {
@Override
public void onCameraReady(UnicoCheckCameraOpener.Selfie cameraOpener) {
cameraOpener.open(selfieListener);
}
@Override
public void onCameraFailed(String message) { }
});
Para el manejo completo del resultado, consulta Recibir el resultado.