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

API pública

A fachada do SDK fica em LivenessIdentySDKClient.shared:
  • initialize é assíncrona e lança (throws) LivenessIdentySDKInitError em caso de falha. Chame uma única vez, preferencialmente no AppDelegate.
  • getSessionData coleta a assinatura de dispositivo (biblioteca de fingerprint) de forma best-effort e nunca falha — nem quando chamada antes de initialize.
  • startLivenessCheck requer uma UIViewController e o sessionToken criado pelo seu backend. options é opcional — veja Opções de captura.
  • 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.
A classe inteira é isolada ao @MainActor — todos os membros (initialize, getSessionData, startLivenessCheck, stop, isInitialized) devem ser acessados a partir do main actor. Nenhuma chave de API precisa ser fornecida pelo app consumidor: as credenciais do vendor, da biblioteca de fingerprint e do Sentry já estão embutidas e criptografadas dentro do XCFramework.

Configuração

Dados de sessão (ssid)

getSessionData() coleta a assinatura de dispositivo via biblioteca de fingerprint 100% internamente — não há protocolo para implementar nem parâmetro a fornecer — e retorna LivenessIdentySDKSessionData diretamente (não é Result nem throws). Sem a dependência opcional shield-ptr-spm (veja Instalação), se a coleta falhar, ou se a função for chamada antes de initialize, ssid vem vazio — isso não é um erro. Nesse caso, omita o campo ssid ao criar a sessão.

Criação de sessão — responsabilidade do app consumidor

O SDK não cria a sessão sozinho. Depois de obter ssid, seu app pede ao seu backend para criar a sessão; o seu backend chama POST /api/v1/sessions na Plataforma ID com a sua x-api-key: A resposta fornece o sessionToken usado em startLivenessCheck. Veja Serviços para a referência completa do endpoint.

Estados do AsyncStream

startLivenessCheck retorna um AsyncStream<LivenessIdentySDKLivenessState> que emite um único caminho loading → success ou loading → error antes de completar:
O XCFramework é compilado com library evolution e os enums públicos do SDK não são @frozen. Por isso os exemplos usam @unknown default: nos switch — sem ele, o compilador emite avisos de exaustividade.

Fluxo de uso

1

Inicializar o SDK

Chame LivenessIdentySDKClient.shared.initialize uma única vez no início do ciclo de vida do app:
2

Obter ssid e criar a sessão no backend

Chame getSessionData() para obter o ssid e envie-o ao seu backend (omitindo-o se vier vazio) para criar a sessão (seção anterior), obtendo o sessionToken.
3

Iniciar a verificação

Passe o sessionToken obtido no passo anterior:
A UI de captura é apresentada pelo próprio IDENTY Face AI SDK sobre o viewController passado.
4

Tratar o resultado

Em .success, verifique status (.passed/.failed) — sucesso no stream não significa aprovação biométrica. Em .error, mapeie cada caso de LivenessIdentySDKError — 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.

Parar e reinicializar o SDK

Não chame stop() enquanto uma captura estiver em progresso. Aguarde o stream de startLivenessCheck encerrar (.success ou .error) antes de chamar.

Campos de LivenessIdentySDKSessionData

Campos de LivenessIdentySDKResultData

status == .passed não é opcional de checar — é a única forma de saber se a verificação biométrica foi aprovada. O stream chegar a .success apenas significa que o fluxo técnico terminou sem erro.

Erros possíveis

LivenessIdentySDKInitError

Lançados por initialize(config:):

LivenessIdentySDKError

Emitido como .error(LivenessIdentySDKError) pelo AsyncStream: A hierarquia completa, com causa provável e ação recomendada para cada caso, está em Solução de problemas.

Próximos passos

Customização

Personalize o estilo da tela de captura

Solução de problemas

Hierarquia de erros e dicas de diagnóstico