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 capability Liveness. Para una descripción conceptual de cómo funciona Liveness, consulta la página de la capability Liveness.
El SDK gestiona la sesión de captura completa:
- Abre la cámara con el overlay de SmartFrame.
- Guía al usuario para que posicione su rostro dentro del frame.
- Valida el liveness — la sesión solo se completa cuando el usuario está físicamente presente.
- Devuelve un objeto
SelfieResult(aliasResultCamera) conbase64yencrypted(JWT).
El SDK tiene el encuadre inteligente y la captura automática habilitados por defecto. Configura el modo de cámara en tu builder de la siguiente manera:
- Swift
- Objective-C
unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
[unicoCheck setSmartFrame:true];
[unicoCheck setAutoCapture:true];
Paso 1 — Implementar AcessoBioManagerDelegate
AcessoBioManagerDelegate gestiona los callbacks del ciclo de vida del SDK. Implementa los cuatro métodos obligatorios:
| Método | Cuándo se llama |
|---|---|
onErrorAcessoBioManager(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 |
- Swift
- Objective-C
class ViewController: UIViewController, AcessoBioManagerDelegate {
var unicoCheck: AcessoBioManager!
override func viewDidLoad() {
super.viewDidLoad()
unicoCheck = AcessoBioManager(viewController: self)
}
func onErrorAcessoBioManager(_ error: ErrorBio!) { }
func onUserClosedCameraManually() { }
func onSystemClosedCameraTimeoutSession() { }
func onSystemChangedTypeCameraTimeoutFaceInference() { }
}
@implementation ViewController: UIViewController
- (void)viewDidLoad {
[super viewDidLoad];
unicoCheck = [[AcessoBioManager alloc]initWithViewController:self];
}
- (void)onErrorAcessoBioManager:(ErrorBio *)error { }
- (void)onSystemChangedTypeCameraTimeoutFaceInference { }
- (void)onSystemClosedCameraTimeoutSession { }
- (void)onUserClosedCameraManually { }
@end
Los cuatro métodos de delegate mencionados anteriormente deben crearse en tu proyecto (aunque no tengan ninguna lógica). De lo contrario, el proyecto no compilará correctamente.
Paso 2 — Implementar SelfieCameraDelegate y AcessoBioSelfieDelegate
Estos delegates gestionan los callbacks del resultado de la captura de selfie:
| Método | Descripción |
|---|---|
onSuccessSelfie(result) | Captura exitosa — devuelve SelfieResult 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.
- Swift
- Objective-C
class ViewController: UIViewController, AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate {
func onSuccessSelfie(_ result: SelfieResult!) { }
func onErrorSelfie(_ errorBio: ErrorBio!) { }
}
// .h
@interface ViewController: UIViewController <AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate> {
AcessoBioManager *unicoCheck;
}
// .m
- (void)onSuccessSelfie:(SelfieResult *)result {
NSLog(@"%@", result.base64);
}
- (void)onErrorSelfie:(ErrorBio *)errorBio { }
Paso 3 — Llamar a prepareSelfieCamera y open
Llama a prepareSelfieCamera pasando la configuración del SDK. Cuando la cámara esté lista, el evento onCameraReady se dispara con un AcessoBioCameraOpenerDelegate — abre la cámara mediante el método open():
onCameraReady(cameraOpener)— la cámara está lista; llama aopen(self).onCameraFailed(message)— la preparación de la cámara falló (ErrorPreparees una extensión deErrorBio).
- Swift
- Objective-C
@IBAction func openCamera(_ sender: Any) {
unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
}
func onCameraReady(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {
cameraOpener.open(self)
}
func onCameraFailed(_ message: ErrorPrepare!) { }
- (IBAction)openCamera:(UIButton *)sender {
[[unicoCheck build] prepareSelfieCamera:self config:[YourUnicoConfigClass new]];
}
- (void)onCameraReady:(id)cameraOpener {
[cameraOpener open:self];
}
- (void)onCameraFailed:(ErrorPrepare *)message { }
El método prepareSelfieCamera ofrece una sobrecarga que acepta metadatos mediante PrepareInfo para facilitar la identificación de la sesión del usuario y el flujo:
externalUserId(String, obligatorio) — Identificador del usuario en tu sistema. Se aplica automáticamente un hash SHA-256 antes de la transmisión.useCase(String, opcional) — Identificador del contexto o flujo en ejecución (p. ej.,"account_opening","password_recovery"). Se transmite en texto plano.
- Swift
- Objective-C
let prepareInfo = PrepareInfo(
externalUserId: "external_user_id",
useCase: "use_case"
)
unicoCheck.build().prepareSelfieCamera(
self,
config: YourUnicoConfigClass(),
prepareInfo: prepareInfo
)
PrepareInfo *prepareInfo = [[PrepareInfo alloc]
initWithExternalUserId:@"external_user_id" useCase:@"flow_id"];
[[unicoCheck build] prepareSelfieCamera:self
config:[YourUnicoConfigClass new]
prepareInfo:prepareInfo];
Para el manejo completo del resultado, consulta Recibir el resultado.