LivenessFacetecSDK para iOS e o fluxo completo de uma verificação de vivacidade.
API pública
A fachada do SDK fica emLivenessFacetecSDKClient.shared:
initializeé assíncrona, retornaLivenessFacetecSDKInitResultcom dados de fingerprint. VerifiqueisInitializedantes de chamar — para reinicializar (ex.: troca de ambiente ou logout), chamestop()antes de um novoinitialize().startLivenessCheckrequer umaUIViewControllere os três tokens de sessão criados pelo consumidor viaPOST /api/v1/sessions.stop()libera o estado interno do SDK. Não chamar enquanto uma captura estiver em progresso.isInitializedindica seinitializefoi concluído com sucesso.
Configuração
Estados do AsyncStream
startLivenessCheck retorna um AsyncStream<LivenessFacetecSDKLivenessState> que emite um único caminho loading → success ou loading → error antes de completar:
Fluxo de uso
1
Inicializar o SDK
Chame
LivenessFacetecSDKClient.shared.initialize uma única vez no início do ciclo de vida do app (preferencialmente no AppDelegate). O método retorna LivenessFacetecSDKInitResult com os dados de fingerprint — armazene-os para usá-los ao criar a sessão:2
Criar sessão no backend
Antes de iniciar o liveness check, crie uma sessão com os dados de fingerprint do
LivenessFacetecSDKInitResult3
Iniciar a verificação
Passe os tokens de sessão obtidos no passo anterior:
4
Tratar o resultado
No caso de sucesso, use
sessionId e captureId para reconciliar a captura no backend. No caso de erro, mapeie cada caso de LivenessFacetecSDKError para uma mensagem ou ação adequada — veja Solução de problemas.Parar e reinicializar o SDK
stop() libera o estado interno do SDK e permite uma nova chamada a initialize(). Use quando precisar trocar de ambiente, realizar logout com limpeza de estado, ou isolar estado entre testes.
Campos de LivenessFacetecSDKResultData
Quando a verificação termina com sucesso, o SDK emite .success(LivenessFacetecSDKResultData):
Os quatro campos
*Check são as garantias de segurança consolidadas pelo backend. Em uma captura legítima, todos devem ser true.Erros possíveis
LivenessFacetecSDKInitError
Lançados por initialize(config:):
LivenessFacetecSDKError
Emitidos como .error(LivenessFacetecSDKError) pelo AsyncStream:
A hierarquia completa, com causa provável e ação recomendada para cada caso, está em Solução de problemas.
Exemplos de retorno
Sucesso — liveness aprovado
O fluxo terminou e a verificação biométrica passou.status vem "completed", result é "live" e todos os *Check são true.
Sucesso — liveness reprovado
O fluxo terminou tecnicamente, mas o resultado biométrico foi negativo.status vem "failed", result é "not_live" e livenessCheck é false.
Esse caso não é erro técnico — o SDK funcionou corretamente, mas a prova de vida foi reprovada. Trate como negativa de verificação no seu app (mostrar mensagem ao usuário e permitir nova tentativa), sem reportar como falha do SDK.
Erro do fluxo
Quando algo no fluxo técnico falha, o SDK emite.error(LivenessFacetecSDKError):
Exemplo completo (SwiftUI)
Próximos passos
Customização
Personalize cores, textos e animações da UI do FaceTec
Solução de problemas
Hierarquia de erros e dicas de diagnóstico