Liveness (selfie biométrica)
Captura de selfie biométrica com verificação de liveness integrada. 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 usa a capacidade de Liveness. Para uma visão conceitual de como o Liveness funciona, consulte a página da capacidade Liveness.
O plugin delega para os SDKs nativos subjacentes:
- O plugin abre a câmera (Android ou iOS) com o overlay SmartFrame.
- O SDK nativo 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
ResultCameracombase64eencrypted(JWT) via o canal da plataforma.
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:
UnicoCheckCameraOpener _opener = _unicoCheck
.setAutoCapture(autoCapture: true)
.setSmartFrame(smartFrame: true)
.build();
Passo 1 — Implementar UnicoListener
UnicoListener trata os callbacks do ciclo de vida do SDK. Implemente os quatro métodos obrigatórios:
| Método | Quando é chamado |
|---|---|
onErrorUnico(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 _MyHomePageState extends State<MyHomePage> implements UnicoListener {
late UnicoCheckBuilder _unicoCheck;
@override
void onErrorUnico(UnicoError error) {}
@override
void onUserClosedCameraManually() {}
@override
void onSystemClosedCameraTimeoutSession() {}
@override
void onSystemChangedTypeCameraTimeoutFaceInference() {}
}
Todos os quatro métodos de listener acima devem ser criados no seu projeto (mesmo sem nenhuma lógica). Caso contrário, o projeto não compilará com sucesso.
Passo 2 — Implementar os listeners de selfie no UnicoSelfie
Adicione os callbacks de selfie à sua classe de estado:
| Método | Descrição |
|---|---|
onSuccessSelfie(ResultCamera result) | Captura realizada com sucesso — retorna ResultCamera com base64 (prévia) e encrypted (JWT para a API) |
onErrorSelfie(UnicoError error) | Captura falhou — retorna um UnicoError com código e descrição |
O intervalo entre a geração do encrypted e o seu envio para a API não deve exceder 10 minutos.
@override
void onSuccessSelfie(ResultCamera result) { }
@override
void onErrorSelfie(UnicoError error) { }
Passo 3 — Chamar openCameraSelfie
O método openCameraSelfie abre a câmera. Ele recebe a implementação do listener UnicoSelfie:
_opener.openCameraSelfie(listener: this);
O método openCameraSelfie oferece uma sobrecarga que aceita metadados via UnicoCheckPrepareInfo 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 hasheado com SHA-256 antes da transmissão.useCase(String, opcional) — Identificador do contexto ou fluxo em execução. Transmitido em texto simples.
_opener.openCameraSelfie(
listener: this,
prepareInfo: UnicoCheckPrepareInfo(
externalUserId: 'external_user_id',
useCase: 'use_case', // opcional
),
);
Para o tratamento completo do resultado, consulte Recebendo o resultado.