Pular para o conteúdo principal

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.

Capability

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.

Como funciona

O SDK gerencia toda a sessão de captura:

  1. Abre a câmera com o overlay SmartFrame.
  2. Guia o usuário para posicionar o rosto dentro do frame.
  3. Valida o liveness — a sessão só é concluída quando o usuário está fisicamente presente.
  4. Retorna um objeto SelfieResult (alias ResultCamera) com base64 e encrypted (JWT).
Modo de câmera (smart capture)

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:

unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
Iniciando uma captura liveness
Passo 1 — Implementar AcessoBioManagerDelegate

AcessoBioManagerDelegate trata os callbacks de ciclo de vida do SDK. Implemente os quatro métodos obrigatórios:

MétodoQuando é 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
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() { }
}
Métodos de delegate obrigatórios

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étodoDescriçã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
Expiração do token

O intervalo entre a geração do encrypted e o envio para a API não deve exceder 10 minutos.

class ViewController: UIViewController, AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate {

func onSuccessSelfie(_ result: SelfieResult!) { }
func 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; chame open(self).
  • onCameraFailed(message) — preparação da câmera falhou (ErrorPrepare é uma extensão de ErrorBio).
@IBAction func openCamera(_ sender: Any) {
unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
}

func onCameraReady(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {
cameraOpener.open(self)
}

func onCameraFailed(_ message: ErrorPrepare!) { }
Coleta de dados de monitoramento

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.
let prepareInfo = PrepareInfo(
externalUserId: "external_user_id",
useCase: "use_case"
)
unicoCheck.build().prepareSelfieCamera(
self,
config: YourUnicoConfigClass(),
prepareInfo: prepareInfo
)

Para o tratamento completo do resultado, consulte Recebendo o resultado.