Skip to main content
Este guia mostra a API pública do LivenessFacetecSDK para iOS e o fluxo completo de uma verificação de vivacidade.

API pública

A fachada do SDK fica em LivenessFacetecSDKClient.shared:
  • initialize é assíncrona, retorna LivenessFacetecSDKInitResult com dados de fingerprint. Verifique isInitialized antes de chamar — para reinicializar (ex.: troca de ambiente ou logout), chame stop() antes de um novo initialize().
  • startLivenessCheck requer uma UIViewController e os três tokens de sessão criados pelo consumidor via POST /api/v1/sessions.
  • stop() libera o estado interno do SDK. Não chamar enquanto uma captura estiver em progresso.
  • isInitialized indica se initialize foi 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 LivenessFacetecSDKInitResult
3

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.
Não chame stop() enquanto uma captura estiver em progresso. Aguarde o stream de startLivenessCheck encerrar (.success ou .error) antes de chamar.

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