Introdução ao SDK
Sobre o CafSDK
Esta documentação técnica aborda a implementação do CafSDK para Flutter, detalhando a configuração, inicialização, execução dos fluxos de captura e personalizações avançadas.
O CafSDK é um SDK unificado que integra vários módulos para verificação de identidade: Face Liveness (FL) e Document Detector (DD), executados sequencialmente com uma interface de configuração unificada.
O que é Face Liveness
Face Liveness é o módulo que valida a autenticidade de um rosto capturado por um aplicativo de fotos, garantindo que a imagem corresponda a uma pessoa real e não a uma tentativa de spoofing.
Características técnicas:
Configuração da URL para autenticação (
authBaseUrl) e verificação de liveness (livenessBaseUrl)Suporte à configuração de proxy reverso com pinagem de certificado
Flags para habilitar captura de tela e modo de depuração
Tentativas de repetição configuráveis e execução da autenticação facial
Suporte a múltiplos provedores de autenticação
O que é Document Detector
Document Detector é o módulo que permite a captura e o processamento de documentos (por exemplo, RG, cartão do INSS, passaporte etc.).
Características técnicas:
Configuração de um fluxo passo a passo definido por
CafDocumentDetectorFlowpara captura de documentosSuporte a vários tipos de documentos (RG, CNH, passaporte etc.)
Parâmetros operacionais, como timeout, flags de captura manual e outras configurações
Possibilidade de usar a câmera para validações de enquadramento ou upload de arquivo de documento
Opções avançadas de personalização para UI, mensagens e comportamento
Exemplo
Confira o aplicativo de exemplo para um exemplo completo de implementação.
Instalação
Requisitos
Para usar os módulos CafSDK no Flutter, certifique-se de que seu projeto atenda aos requisitos mínimos:
Flutter
Versão do Flutter
3.3.0+
Dart
3.9.0+
Android
API do SDK Android - versão mínima (minSdk)
26
API do SDK Android - versão de compilação (compileSdk)
36+
Kotlin
1.8+
Gradle
8.0+
Android Gradle Plugin (AGP)
8.0+
iOS
Target de implantação do iOS
13.0+
Xcode
14.0+
Swift
5.0+
Passo 1: Instale o SDK
Instale o pacote principal do SDK:
Passo 2: Configure a seleção de módulos
Crie um caf-modules-config.json arquivo na raiz do seu projeto para especificar quais módulos incluir:
Observação: Se você omitir este arquivo, todos os módulos serão ativados por padrão e
iproov-liteserá usado como provedor padrão de Face Liveness.
Defina os true módulos que você deseja usar em sua aplicação.
Para um único provedor, livenessProviders pode ser uma string. Os valores permitidos são iproov-lite, iproov-full, payface, e facetec. Para usar vários provedores, use um array (veja o exemplo abaixo).
iProov e Protobuf
iproov-lite: use quando seu app tiver como alvo Protobuf JavaLite—a escolha usual para uma pegada binária menor no Android.iproov-full: use quando você precisar de Protobuf Java (completo) junto com iProov.
Você pode declarar mais de um provedor definindo livenessProviders como um array quando sua integração exigir isso.
Se você incluir o provedor PayFace , você também deve usar iProov Lite (iproov-lite). O PayFace é compilado com base em Protobuf JavaLite; misturá-lo com iproov-full causa conflitos de dependência do Protobuf no momento da compilação.
Defina os true módulos que você deseja usar em sua aplicação.
Fingerprint
O módulo Fingerprint é opcional e é configurado em caf-modules-config.json por meio da fingerprint propriedade (boolean). O padrão é false, então você não precisa adicionar a propriedade, a menos que queira usá-la. Para habilitar o módulo, defina explicitamente "fingerprint": true.
Requer um módulo Face Liveness. O Fingerprint é coletado como parte do fluxo de liveness, então só é incluído quando faceLiveness ou faceLivenessUI também está habilitado. Definir "fingerprint": true sem um módulo de liveness habilitado não tem efeito.
Importante: Entre em contato com o Suporte da CAF para solicitar a ativação. Se isso não estiver habilitado do nosso lado, o SDK não acionará a biblioteca de fingerprint e nenhum dado será enviado, mesmo que a propriedade esteja definida como true localmente.
Passo 3: Configuração do Android
Adicionar repositórios Maven
Configure o projeto build.gradle.kts do projeto (normalmente localizado na raiz):
Passo 4: Configuração do iOS
Acesse o ios/ diretório do seu projeto Flutter e execute:
Este passo é obrigatório para que o iOS vincule corretamente os módulos nativos e suas dependências necessárias.
Sempre execute novamente
pod installsempre que dependências nativas forem adicionadas ou atualizadas.
Permissões
Android
Para que os módulos operem corretamente, você deve declarar as seguintes permissões no seu AndroidManifest.xml:
Para Face Liveness
android.permission.CAMERA
Permite acesso à câmera para capturar imagens e realizar a verificação facial (liveness).
Obrigatória
android.permission.INTERNET
Permite a comunicação com serviços de autenticação e verificação (HTTPS/WSS).
Obrigatória
Para Document Detector
android.permission.CAMERA
Permite acesso à câmera para capturar imagens de documentos.
Apenas para captura
android.permission.INTERNET
Permite que imagens capturadas sejam enviadas aos servidores para processamento e validação.
Obrigatória
android.permission.READ_EXTERNAL_STORAGE
Permite acesso a arquivos e imagens armazenados para processamento, se necessário.
Apenas para upload
iOS
Para que os módulos do SDK funcionem corretamente, você deve declarar as seguintes permissões no seu Info.plist:
Para Face Liveness:
NSCameraUsageDescription
Permite acesso à câmera para capturar imagens e realizar a verificação facial (liveness).
Obrigatória
Acesso à rede
Permite a comunicação com serviços de autenticação e verificação (HTTPS/WSS).
Obrigatória
Para Document Detector:
NSCameraUsageDescription
Permite acesso à câmera para capturar imagens de documentos.
Apenas para captura
Acesso à rede
Permite que imagens capturadas sejam enviadas aos servidores para processamento e validação.
Obrigatória
NSPhotoLibraryUsageDescription
Permite acesso a arquivos e imagens armazenados para processamento, se necessário.
Apenas para upload
Implementação básica
Exemplo simples
Aqui está um exemplo básico de implementação:
Configuração
Idioma
Android
O idioma é definido automaticamente de acordo com o idioma configurado no dispositivo, sem nenhuma configuração adicional.
iOS
De acordo com a documentação da Apple, configurar Localizações e CFBundleLocalizations deve ser feito no Xcode:
Após essas configurações, o SDK reconhecerá o idioma do dispositivo.
Configuração global
A CafSdk classe serve como o contêiner central para todas as configurações. Essa configuração define a ordem de execução dos módulos e a identidade visual.
Parâmetros essenciais:
mobileToken: Token que autentica a requisição e garante que apenas clientes autorizados iniciem o fluxo
personId: Identificador único do usuário para o qual o fluxo será executado
environment: Define o ambiente de execução (PROD, BETA, DEV)
presentationOrder: Define a sequência em que os módulos serão executados
enableSecurityModule: Habilita ou desabilita o módulo de segurança. Opcional, o padrão é
true
Exemplo de código para criar a configuração global:
Configuração Específica do Módulo
Configuração do Face Liveness
Você pode configurar o módulo Face Liveness criando um CafFaceLivenessConfiguration. Ao usar o provedor opcional PayFace (Fortface), use payFaceDebugMode para ativar o modo de depuração para esse provedor.
Configuração do Detector de Documentos
Você pode configurar o módulo Detector de Documentos criando um CafDocumentDetectorConfiguration:
Tratamento de Eventos
Garanta que a resposta JWT seja avaliada no backend. Esse processo deve incluir a validação da assinatura do token e a verificação dos estáVivo e éCorrespondente campos. Não realize essas validações no lado do cliente.
A eventStream da CafSdk classe fornece um tipado Stream<CafResponse> gerado durante a execução do fluxo de captura. Cada CafResponse tem exatamente um campo preenchido, o que indica o tipo de evento:
loading
bool
Indica o início do processamento do módulo
loaded
bool
Indica que o módulo foi processado
success
CafSuccessResponse?
Após conclusão bem-sucedida; contém moduleName e signedResponse
error
CafErrorResponse?
Ocorreu um problema durante a execução; contém type e description
failure
CafFailureResponse?
Indica uma falha do Face Liveness; contém type, description, e response
log
CafLog?
Mensagens de log com diferentes níveis; contém level (DEBUG, USAGE, INFO) e message
cancelled
bool
Indica que o usuário ou o sistema interrompeu o fluxo
Nota de migração (v2.0.0):
eventStreamagora emite objetosCafResponsetipados em vez deMappayloads brutos. Substitua qualquer acessoevent['eventName']/event['response']pelos campos tipados mostrados acima.
Exemplo de tratamento de eventos:
Tipos de Erro (CafErrorType)
CAMERA_PERMISSION
Acesso à câmera negado
UNSUPPORTED_DEVICE
Especificações do dispositivo não suportadas
NETWORK_EXCEPTION
Problemas de conectividade de rede
SERVER_EXCEPTION
Falha no processamento do backend
TOKEN_EXCEPTION
Token inválido/expirado
CAPTURE_ALREADY_ACTIVE_EXCEPTION
Sessão de captura simultânea
UNEXPECTED_ERROR_EXCEPTION
Erro crítico irrecuperável
USER_TIMEOUT_EXCEPTION
Tempo limite de captura excedido
IMAGE_NOT_FOUND_EXCEPTION
Dados da imagem ausentes
TOO_MANY_REQUESTS_EXCEPTION
Limite de requisições da API excedido
UNKNOWN_EXCEPTION
Erro não classificado
LIBRARY_EXCEPTION
Erro de baixo nível do framework
PERMISSION_EXCEPTION
Permissões do sistema ausentes
INVALID_EXCEPTION
Resposta inválida recebida
SEQUENCE_INVALID
Sequência de operação inválida
LIVENESS_EXCEPTION
Erro específico de Face Liveness
FINGERPRINT_EXCEPTION
Erro relacionado à impressão digital
STORAGE_EXCEPTION
Erro de acesso ao armazenamento
PROXY_EXCEPTION
Erro de configuração do proxy
SECURITY_EXCEPTION
Erro de validação de segurança
INVALID_RESPONSE_EXCEPTION
Payload de resposta inválido recebido de um módulo
CAMERA_EXCEPTION
Falha na inicialização ou em tempo de execução da câmera
FACE_AUTHENTICATION
Erro durante a autenticação facial (executeFaceAuth)
BRIDGE_EXCEPTION
Erro de comunicação na ponte nativa ↔ Flutter
Tipos de Falha (CafFailureType)
DESCONHECIDO
Falha genérica
✅
❌
TOO_MUCH_MOVEMENT
Movimento excessivo da cabeça
✅
❌
TOO_BRIGHT
Iluminação excessiva
✅
❌
TOO_DARK
Condições de pouca luz
✅
❌
MISALIGNED_FACE
Falha no alinhamento do rosto
✅
❌
FACE_TOO_FAR
Rosto muito distante
✅
❌
FACE_TOO_CLOSE
Rosto muito próximo
✅
❌
SUNGLASSES
Óculos que cobrem os olhos
✅
❌
OBSCURED_FACE
Obstrução parcial do rosto
✅
✅
EYES_CLOSED
Olhos fechados durante a captura
✅
✅
MULTIPLE_FACES
Vários rostos detectados
✅️
✅️
BACKGROUND_ISSUE
Fundo inadequado
❌
✅
DEVICE_ISSUE
Dispositivo incompatível
❌
✅
EYEWEAR
Óculos detectados
❌
✅
FACE_NOT_FOUND
Falha na detecção do rosto
❌
✅
FRAMES_BLURRY
Quadros borrados detectados
❌
✅
MOTION_ISSUE
Erro de movimento do dispositivo
❌
✅
LIGHTING_ISSUES
Condições de iluminação ruins
❌
✅
REJECTED
Transação rejeitada
❌
✅
SYSTEM_ERROR
Erro interno do sistema
❌
✅
TIMEOUT
Tempo limite da sessão
❌
✅
USER_NOT_FOUND
Falha na busca do usuário
❌
✅
DEVICE_RESTART
Erro no estado do dispositivo
❌
✅
PROCESSING_FAULT
Erro de processamento
❌
✅
Tipos de Documento
Documentos Suportados (CafDocument)
RG_FRONT
Frente do documento RG, onde a foto está localizada
RG_BACK
Verso do documento RG
RG_FULL
Documento RG aberto, exibindo a frente e o verso juntos
CNH_FRONT
Frente do documento CNH, onde a foto está localizada
CNH_BACK
Verso do documento CNH
CNH_FULL
Documento CNH aberto, exibindo a frente e o verso juntos
CRLV
Documento CRLV
RNE_FRONT
Frente do documento RNE ou RNM
RNE_BACK
Verso do documento RNE ou RNM
CTPS_FRONT
Frente do documento CTPS, onde a foto está localizada
CTPS_BACK
Verso do documento CTPS
PASSPORT
Documento de passaporte, exibindo a foto e os dados pessoais
ANY
Permite o envio de qualquer tipo de documento, incluindo todos os listados acima ou qualquer outro documento não classificado
Formatos de Arquivo Suportados (CafFileFormat)
PNG
image/png
JPG
image/jpg
JPEG
image/jpeg
PDF
application/pdf
HEIF
image/heif
HEIC
image/heic
Configuração Avançada
Configuração da UI do Face Liveness
Ao usar o módulo de UI, você pode personalizar as telas de instrução:
Configuração da UI do Detector de Documentos
Configuração de Proxy
Para as configurações de proxy do Detector de Documentos:
Personalização de Mensagens
Personalize as mensagens exibidas durante o fluxo de captura:
Exemplo de Implementação Completa
Aqui está um exemplo completo mostrando tanto a UI do Face Liveness quanto a UI do Detector de Documentos:
Regras do ProGuard/R8
Adicione estas regras do ProGuard/R8 ao seu proguard-rules.pro arquivo para Android:
Suporte técnico e dicas de uso
Suporte técnico Se você tiver alguma dúvida ou dificuldade com a integração, entre em contato com o suporte técnico da Caf.
Dicas de uso
Execute testes: Realize testes em dispositivos reais para validar os requisitos e o desempenho do fluxo
Explore personalizações: Use opções avançadas de personalização para adaptar o fluxo às necessidades do seu projeto
Monitore o desempenho: Integre ferramentas de monitoramento para acompanhar os logs e o desempenho do fluxo em produção
Lide com erros de forma elegante: Implemente o tratamento adequado de erros para todos os possíveis cenários de erro e falha
Teste com diferentes dispositivos: Garanta compatibilidade entre várias especificações de dispositivos e tamanhos de tela
Notas de lançamento
[email protected]
Data de lançamento
08-03-2026
Alteração incompatível : O módulo Fingerprint agora é opcional e pode ser configurado em caf-modules-config.json por meio da nova fingerprint propriedade (booleano). Por padrão, a impressão digital está definida como false, o que significa que você não precisa adicionar essa propriedade ao JSON, a menos que queira usá-la. Para ativar o módulo, você deve adicionar explicitamente "fingerprint": true. Importante: a impressão digital também deve ser ativada no Backoffice. Se ela não estiver ativada no Backoffice, o SDK nunca chamará a biblioteca de impressão digital e nenhum dado será enviado, mesmo que a propriedade esteja definida como true localmente.
Destaques
Módulo Fingerprint opcional: Controle a inclusão do recurso de impressão digital diretamente de
caf-modules-config.json. Ele está desativado por padrão, garantindo que você só inclua a dependência quando estritamente necessário.
Atualizações
Novo
fingerprintcampo booleano emcaf-modules-config.jsonpara Android e iOS.
[email protected]
Data de lançamento
07-06-2026
Alteração incompatível: A eventStream agora emite um tipado Stream<CafResponse> em vez de um Stream<dynamic> com cargas úteis brutas. Map Atualize todos os listeners: substitua event['eventName'] / event['response'] pelos campos tipados — event.success, event.error, event.failure, event.log, event.loading, event.loaded, e event.cancelled. Veja Tratamento de Eventos o exemplo completo de migração.
Destaques
Relato de erros mais consistente: Erros que ocorrem durante a inicialização do fluxo e estão relacionados à integração interna do SDK agora são emitidos por meio do
errorevento comoBRIDGE_EXCEPTION, para que possam ser tratados da mesma forma que qualquer outro erro do SDK.
Mudanças Incompatíveis
Stream de eventos tipado:
CafSdk.eventStreamagora éStream<CafResponse>. Os consumidores devem acessar os campos tipados deCafResponse(success,error,failure,log,loading,loaded,cancelled) em vez de indexar umMap.Classes de configuração de módulo simplificadas: O
...BuilderConfigurationos wrappers foram removidos. Os campos agora são passados diretamente nos objetos de configuração do módulo, e as configurações da UI estendem a configuração base em vez de aninhá-la:CafFaceLivenessBuilderConfigurationremovido — passe os campos diretamente emCafFaceLivenessConfiguration.CafDocumentDetectorBuilderConfigurationremovido — passe os campos diretamente emCafDocumentDetectorConfiguration.CafFaceLivenessUIBuilderInstructionScreenConfiguration→CafFaceLivenessUIInstructionScreenConfiguration, e o campoinstructionScreenConfiguration→instructionScreen.CafDocumentDetectorUIBuilderInstructionScreenConfiguration→CafDocumentDetectorUIInstructionScreenConfiguration, e o campoinstructionScreenConfiguration→instructionScreen.CafDocumentDetectorUIBuilderDocumentSelectionScreenConfiguration→CafDocumentDetectorUIDocumentSelectionScreenConfiguration, e o campodocumentSelectionScreenConfiguration→documentSelectionScreen.No nível do SDK
CafSdkConfigurationpermanece inalterado e ainda recebeconfiguration: CafSdkBuilderConfiguration(...).
initializeCafSdktipo de retorno: alterado deFuture<bool?>paraFuture<bool>.
Atualizações
Constantes de nome dos eventos: Adicionadas as
CafSdkEventNameconstantes (CafUnifiedEvent.*) para identificar os eventos emitidos.Novo
CafErrorTypevalores: AdicionadosINVALID_RESPONSE_EXCEPTION,CAMERA_EXCEPTION,FACE_AUTHENTICATION, eBRIDGE_EXCEPTION. Observe queBRIDGE_EXCEPTIONrelata erros que ocorrem ao inicializar ou iniciar o fluxo; ouça-o noerrorevento e trate-o como parte do seu tratamento normal de erros.CafSuccessResponse:signedResponseagora é tipado comoString?(anteriormentedynamic), emoduleNamea resolução é mais resiliente a variações de identificadores nativos.
Guia de Migração — 1.x → 2.0.0
Três coisas mudaram para os integradores: como você lê eventos, como constrói configurações de módulo e o tipo de retorno de initializeCafSdk. No nível do SDK CafSdkConfiguration (com CafSdkBuilderConfiguration) permanece inalterado.
1. Leia eventos do stream tipado
2. Remova o módulo ...BuilderConfiguration wrapper
Passe os campos diretamente no objeto de configuração do módulo.
3. Atualize as configurações de UI (wrapper + tipos e campos renomeados)
4. Renomeie as importações de tipos (se você importou os tipos removidos)
CafFaceLivenessBuilderConfiguration
CafFaceLivenessConfiguration
CafDocumentDetectorBuilderConfiguration
CafDocumentDetectorConfiguration
CafFaceLivenessUIBuilderInstructionScreenConfiguration
CafFaceLivenessUIInstructionScreenConfiguration
CafDocumentDetectorUIBuilderInstructionScreenConfiguration
CafDocumentDetectorUIInstructionScreenConfiguration
CafDocumentDetectorUIBuilderDocumentSelectionScreenConfiguration
CafDocumentDetectorUIDocumentSelectionScreenConfiguration
5. Atualize o initializeCafSdk tipo de retorno
initializeCafSdk agora retorna Future<bool> em vez de Future<bool?>. Remova qualquer verificação de nulo no resultado aguardado.
[email protected]
Data de lançamento
05-25-2026
Atualizações
Provedor de Liveness da Payface (Android): Atualize a versão de
1.18.2para1.19.2.Provedor de Liveness da Payface (iOS): Atualize a versão de
1.5.2para1.8.2.
Correções
FaceLiveness
O erro de carregamento infinito ocorre quando o SDK retorna um erro.
A primeira inicialização não funciona ao usar
Payfaceprovedor.
[email protected]
Data de lançamento
05-08-2026
Correções
DocumentDetector: Corrigido o comportamento ao lidar com RG (Carteira de Identidade Nacional brasileira) com a opção de documento digital.
[email protected]
Data de lançamento
04-13-2026
Alteração incompatível : Os provedores de Face Liveness agora podem ser configurados em caf-modules-config.json via livenessProviders (string ou array). Quando fornecido, ele deve listar o(s) provedor(es) escolhido(s). Não use iproov-lite e iproov-full juntos —iproov-full usa uma versão diferente do Protobuf, e combiná-los causará erros de classe duplicada no momento da compilação. PayFace requer iproov-lite (Protobuf JavaLite); combinar PayFace com iproov-full causa conflitos de Protobuf na compilação. Se omitido, o SDK usa por padrão iproov-lite em ambas as plataformas. Um valor vazio ou inválido causa um erro de compilação no Android; no iOS, um valor vazio também recorre a iproov-lite, mas um valor inválido causa falha na compilação. Veja Passo 2: Configure a seleção de módulos para detalhes.
Destaques
Provedores de Face Liveness configuráveis: Escolha
iproov-lite,iproov-full,payface, e/oufacetecdecaf-modules-config.jsonem vez de depender dos padrões nativos implícitos.
Atualizações
Configuração do provedor de Liveness:
Novo
livenessProviderscampo emcaf-modules-config.jsonpara Android e iOS.Documentado Protobuf JavaLite vs Protobuf Java mapeamento para
iproov-litevsiproov-full.Esclarecido com vários provedores usando um array, e a PayFace + iProov Lite exigência.
Provedor de Liveness iProov: Documentação e padrões atualizados para refletir o novo modelo de seleção de provedor.
Android ProGuard / R8: Se o R8 relatar classes ausentes para os stubs de lint fornecidos com o SDK, adicione o seguinte a
proguard-rules.pro(também listado em Regras do ProGuard/R8):
[email protected]
Data de lançamento
02-09-2026
Versões anteriores à 1.2.0 farão com que o iProov Liveness se torne inoperante a partir de 12 de março de 2026. Para garantir o funcionamento adequado e a continuidade do serviço, use a versão 1.2.0 ou posterior.
Destaques
Provedor de Liveness atualizado: Atualização crítica da versão do provedor iProov para melhor estabilidade
Atualizações
Provedor de Liveness iProov: Atualizada a versão interna do provedor iProov.
[email protected]
Data de lançamento
02-09-2026
Destaques
Novo módulo de segurança: Introdução do
CafSecuritymódulo para validações de segurançaIntegração com PayFace: Adicionado suporte ao PayFace (Fortface) como provedor opcional de Face Liveness
Melhorias de estabilidade: Correções importantes de falhas e melhorias de estabilidade para o módulo Document Detector
Recursos
Módulo CafSecurity:
Adicionado um novo módulo especificamente para validações de segurança
Configuração: Adicionados
enableSecurityModuleflag emCafSdkConfiguration(valor padrão:true)
Integração com PayFace (Fortface):
Integração opcional com provedor de Face Liveness
Configuração: Nova propriedade
payFaceDebugModeemCafFaceLivenessConfigurationpara ativar o modo de depuração para o provedor PayFace
Correções
DocumentDetector:
Ciclo de vida da Activity: Resolvidos vários travamentos relacionados ao gerenciamento do ciclo de vida da activity (estados de inicialização, pausa e retomada)
Ciclo de vida da câmera: Melhorado o gerenciamento de recursos da câmera e do ciclo de vida das threads para evitar travamentos durante o encerramento do SDK
Componentes de UI: Resolvidos problemas de compatibilidade de tema e exceções de transação de fragmentos
Requisições de rede: Corrigido o manuseio do corpo da resposta para evitar erros ao ler respostas de rede
Acesso a dados: Melhorada a inicialização e validação do cursor antes de acessar dados do banco de dados
Prevenção de ANR: Otimizadas as verificações de instância do controlador de documentos para evitar problemas de "Aplicativo não respondendo"
Geral: Melhorias internas e correções de estabilidade
FaceLiveness:
Sessões: Corrigidos erros de criação de sessão
UI: Corrigida a tonalidade de cor em imagens remotas na tela de Instruções
Atualizações
Configuração de compilação:
Regras do ProGuard: Adicionadas as regras necessárias do ProGuard para a integração com PayFace
[email protected]
Data de lançamento
03-09-2026
Atualizações
Provedor de Liveness iProov atualizado: Atualize a versão do provedor iProov.
Atualizado o target mínimo de implantação do iOS: Atualizado para
15.0.
Correções
DocumentDetector
Corrigidos travamentos no módulo Document Detector: Resolvidos vários travamentos relacionados ao gerenciamento do ciclo de vida da activity, incluindo estados de inicialização, pausa e retomada.
Corrigidos travamentos relacionados ao ciclo de vida da câmera: Melhorado o gerenciamento de recursos da câmera e do ciclo de vida das threads para evitar travamentos durante o encerramento do SDK e transições de estado.
Corrigidos travamentos nos componentes de UI: Resolvidos problemas de compatibilidade de tema e exceções de transação de fragmentos para garantir o comportamento adequado da UI.
Corrigidos travamentos em requisições de rede: Corrigido o manuseio do corpo da resposta para evitar erros ao ler respostas de rede.
Corrigidos travamentos no acesso a dados: Melhorada a inicialização e validação do cursor antes de acessar dados do banco de dados.
Corrigido ANR no Document Controller: Otimizadas as verificações de instância do controlador de documentos para evitar problemas de aplicativo não respondendo.
Melhorias e correções internas: Melhorias adicionais de estabilidade e correções de bugs.
[email protected]
Data de lançamento
10-27-2025
Destaques
Primeira versão do Flutter SDK: Implementação completa em Flutter do CAF SDK para verificação de identidade
SDK unificado: Pacote único contendo todos os módulos CAF (Face Liveness e Document Detector) com variantes de core e UI
Integração Flutter-Nativa: Integração perfeita com o sistema de widgets e o gerenciamento de estado do Flutter
Suporte multiplataforma: Suporte completo para as plataformas Android e iOS
Configuração com segurança de tipos: Classes de configuração Dart fortemente tipadas para uma melhor experiência de desenvolvimento
Recursos
Sistema de configuração de módulos:
caf-modules-config.json: Arquivo de configuração na raiz do projeto para especificar quais módulos incluirMódulos disponíveis:
documentDetector: Ativar/desativar o módulo Document DetectorfaceLiveness: Ativar/desativar o módulo Face LivenessdocumentDetectorUI: Ativar/desativar o módulo de UI do Document DetectorfaceLivenessUI: Ativar/desativar o módulo de UI do Face Liveness
Exemplo de configuração:
Recursos principais do SDK:
Classe CafSdk: Classe principal do SDK para inicialização e configuração
Stream de eventos: Tratamento de eventos em tempo real por meio de streams Dart
Gerenciamento de módulos: Execução sequencial de módulos com ordem de apresentação configurável
Tratamento de erros: Tipos de erro abrangentes e tratamento de falhas
Builder de configuração: Configuração com segurança de tipos usando o padrão builder
Módulo Face Liveness:
Módulo principal:
CafFaceLivenessConfigurationpara controle programáticoMódulo de UI:
CafFaceLivenessUIConfigurationcom telas de instruções personalizáveisRecursos: URLs de autenticação, pinagem de certificado, modo de depuração, tentativas de repetição
Personalização: Telas de instrução com imagens, títulos, descrições e etapas
Módulo Document Detector:
Módulo principal:
CafDocumentDetectorConfigurationpara controle programáticoMódulo de UI:
CafDocumentDetectorUIConfigurationcom personalização completa da UITipos de Documento: Suporte para RG, CNH, Passaporte, RNE, CTPS e mais
Suporte a upload: Upload de arquivos com compactação, controle de formato e limites de tamanho
Configuração de Proxy: Suporte a servidores proxy com autenticação
Personalização de Mensagens: Mensagens personalizáveis para o usuário durante todo o fluxo
Configuração Avançada:
Tema de cores: Personalização completa das cores da UI por meio de
CafColorConfigurationConfigurações de segurança: Flags de desenvolvimento, modo de depuração e controles de segurança
Controle de fluxo: Captura manual, timeouts, tentativas de repetição e controles de pop-up
Telas de instrução: Telas de instrução personalizáveis para ambos os módulos
Implementação técnica
Integração com Flutter:
Method Channels: Comunicação nativa por meio do sistema de method channels do Flutter
Eventos baseados em stream: Tratamento de eventos em tempo real usando streams Dart
Gerenciamento de estado: Gerenciamento adequado do ciclo de vida com
StatefulWidgetsuporteTratamento de erros: Tratamento abrangente de erros com exceções tipadas
Suporte à plataforma:
Android: Suporte completo com regras do ProGuard/R8 e configuração do repositório Maven
iOS: Integração completa com CocoaPods e módulos nativos do iOS
Permissões: Tratamento adequado de permissões para acesso à câmera e à rede
Desempenho:
Carregamento seletivo de módulos: Carregue apenas os módulos ativados para otimizar o tamanho do pacote
Gerenciamento de memória: Limpeza adequada de recursos e gerenciamento de memória
Otimização de rede: Comunicação de rede eficiente com mecanismos de repetição
Instalação e configuração
Instalação do pacote: Instalação simples via
flutter pub add caf_sdkConfiguração de módulos: Seleção fácil de módulos por meio de arquivo de configuração JSON
Configuração da plataforma: Instruções claras para configuração das plataformas Android e iOS
Gerenciamento de Permissões: Configuração abrangente de permissões para ambas as plataformas
Documentação
Exemplos Completos: Exemplos completos de implementação para uso básico e avançado
Guia de Configuração: Opções de configuração detalhadas para todos os módulos
Tratamento de Eventos: Exemplos e padrões abrangentes de tratamento de eventos
Referência de Erros: Documentação completa dos tipos de erro e cenários de falha
Mudanças Incompatíveis
Primeira Versão: Esta é a primeira versão do SDK Flutter, então não há mudanças que causem quebra de compatibilidade em relação às versões anteriores.
Problemas Conhecidos
Simulador iOS: Alguns recursos podem não funcionar corretamente no Simulador iOS devido a limitações da câmera
Emulador Android: Recursos que dependem da câmera exigem dispositivos físicos para testes
Requisitos de Rede: Todos os módulos exigem conexão com a internet para funcionar corretamente
Atualizado

