LivenessIdentySDK e o fluxo completo de uma verificação de vivacidade.
API pública
A fachada do SDK fica emcom.vcc.vendor.identy.sdk.LivenessIdentySDK:
inité umasuspend funque retornaResult<Unit>. Não é idempotente: chamá-la de novo sem antes chamarstop()falha comLivenessIdentySDKInitError.AlreadyInitialized.getSessionDatacoleta a assinatura de dispositivo (biblioteca de fingerprint) e nunca falha — veja Dados de sessão.startLivenessCheckrequer aActivitychamadora e osessionTokencriado pelo seu backend.optionsé opcional — veja Opções de captura.stop()libera o estado interno do SDK.isInitializedindica seinitfoi concluído com sucesso estop()ainda não foi chamado.
As credenciais internas do SDK (biblioteca de fingerprint, Sentry) são embutidas e cifradas no AAR. Nenhuma chave precisa ser fornecida pelo app consumidor.
Configuração
Erros de inicialização — LivenessIdentySDKInitError
Em caso de falha, o Result de init() traz um LivenessIdentySDKInitError:
Dados de sessão
Depois deinit(), colete a assinatura de dispositivo da biblioteca de fingerprint com getSessionData():
getSessionData() nunca falha — não retorna Result. A coleta de ssid é best-effort: se a biblioteca de fingerprint falhar internamente, ou se a função for chamada antes de init(), o ssid vem vazio (""). Quando isso acontecer, omita o campo ssid ao criar a sessão — a sessão é criada normalmente, apenas sem os metadados de dispositivo.Criação de sessão — responsabilidade do consumer app
O SDK não cria sessões nem se comunica diretamente com o backend de autenticação. Apósinit(), o consumer app deve:
- Chamar
getSessionData()para obter ossid. - Enviar
ssid(quando não vazio) e umclientRequestId(UUID gerado pelo seu app) ao seu próprio backend. - O seu backend chama
POST /api/v1/sessionscom a suax-api-key, e o serviço devolve osessionToken. - Passar o
sessionTokenparastartLivenessCheck().
Veja Serviços para o contrato do
POST /api/v1/sessions.Estados do Flow
startLivenessCheck retorna um Flow<LivenessIdentySDKLivenessState>:
Fluxo de uso
1
Inicializar o SDK
Chame
LivenessIdentySDK.init uma única vez, preferencialmente no onCreate() da Application:2
Coletar dados de sessão e criar sessão no backend
3
Iniciar a verificação
O SDK solicita a permissão de câmera em runtime antes de abrir a captura. Se o usuário recusar, o fluxo termina com
CameraPermissionDenied ou CameraPermissionPermanentlyDenied.4
Tratar o resultado
No caso de sucesso, verifique sempre
status == CaptureStatus.PASSED para confirmar aprovação biométrica. No caso de erro, mapeie cada subtipo de LivenessIdentySDKError para uma mensagem ou ação adequada — veja Solução de problemas.Opções de captura
startLivenessCheck() aceita o parâmetro opcional options para ajustar, por captura, o nível de segurança do anti-spoofing, o nível de detecção de deepfake e os formatos de template retornados:
requiredTemplates sempre inclui JPEG — mesmo que você não o liste, o SDK o coloca em primeiro lugar e remove duplicatas. Os formatos adicionais aparecem em LivenessIdentySDKResultData.templates, quando o backend os retorna. As opções valem só para a chamada em que foram passadas: uma captura sem options volta aos padrões.Campos de LivenessIdentySDKResultData
Exemplo de tratamento de erro
Parando o SDK
LivenessIdentySDK.stop() libera todos os recursos internos do SDK e reseta seu estado, deixando-o exatamente como estava antes do primeiro init().
Próximos passos
Customização
Personalize a UI de captura do IDENTY Face AI
Solução de problemas
Hierarquia de erros e dicas de diagnóstico