Liveness (selfie biométrica)
Captura de selfie biométrica com verificação de liveness embarcada. O SDK guia o usuário até que um frame biometricamente válido seja obtido via SmartFrames e retorna a imagem em Base64 + JWT.
Este tipo de captura utiliza a capability Liveness. Para uma visão conceitual de como o Liveness funciona, consulte a página da capability Liveness.
O SDK gerencia toda a sessão de captura:
- Abre a câmera com o overlay SmartFrame.
- Guia o usuário para posicionar o rosto dentro do frame.
- Valida o liveness — a sessão só é concluída quando o usuário está fisicamente presente.
- Retorna um objeto
SelfieResult(aliasResultCamera) combase64eencrypted(JWT).
O SDK tem enquadramento inteligente e captura automática habilitados por padrão. Configure o modo de câmera no seu builder da seguinte forma:
- Swift
- Objective-C
unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
[unicoCheck setSmartFrame:true];
[unicoCheck setAutoCapture:true];
Passo 1 — Implementar AcessoBioManagerDelegate
AcessoBioManagerDelegate trata os callbacks de ciclo de vida do SDK. Implemente os quatro métodos obrigatórios:
| Método | Quando é chamado |
|---|---|
onErrorAcessoBioManager(error) | Ocorreu um erro durante a operação do SDK |
onUserClosedCameraManually() | O usuário fechou a câmera manualmente |
onSystemClosedCameraTimeoutSession() | O limite de 40 segundos da sessão foi atingido |
onSystemChangedTypeCameraTimeoutFaceInference() | Nenhum rosto detectado por 13 segundos — muda para 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
Todos os quatro métodos de delegate acima devem ser criados no seu projeto (mesmo sem lógica alguma). Caso contrário, o projeto não compilará com sucesso.
Passo 2 — Implemente SelfieCameraDelegate e AcessoBioSelfieDelegate
Estes delegates tratam os callbacks de resultado da captura de selfie:
| Método | Descrição |
|---|---|
onSuccessSelfie(result) | Captura realizada com sucesso — retorna SelfieResult com base64 (preview) e encrypted (JWT para a API) |
onErrorSelfie(errorBio) | Captura falhou — retorna um ErrorBio com código e descrição |
O intervalo entre a geração do encrypted e o envio para a API não deve exceder 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 { }
Passo 3 — Chame prepareSelfieCamera e open
Chame prepareSelfieCamera passando a configuração do SDK. Quando a câmera estiver pronta, o evento onCameraReady é disparado com um AcessoBioCameraOpenerDelegate — abra a câmera pelo método open():
onCameraReady(cameraOpener)— câmera pronta; chameopen(self).onCameraFailed(message)— preparação da câmera falhou (ErrorPrepareé uma extensão 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 { }
O método prepareSelfieCamera oferece uma sobrecarga que aceita metadados via PrepareInfo para auxiliar na identificação da sessão do usuário e do fluxo:
externalUserId(String, obrigatório) — Identificador do usuário no seu sistema. Automaticamente convertido em hash SHA-256 antes da transmissão.useCase(String, opcional) — Identificador do contexto ou fluxo em execução (ex.:"account_opening","password_recovery"). Transmitido em texto simples.
- 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 o tratamento completo do resultado, consulte Recebendo o resultado.