For the complete documentation index, see llms.txt. This page is also available as Markdown.

DocumentDetector v7.x e acima

Requisitos

Flutter
Versão

Flutter

1.20+

Dart

>=2.15.0 <4.0.0

Android
Versão

minSdk

26

compileSdk

34

iOS
Versão

Alvo do iOS

13.0+

Xcode

15.4+

Swift

5.3.2+

Dependências dos SDKs nativos


dependencies {
    // Básico
    implementation "androidx.appcompat:appcompat:1.1.0"

    // Design
    implementation "com.google.android.material:material:1.2.1"
    implementation "androidx.constraintlayout:constraintlayout:2.0.1"

    // Detecção de documentos
    implementation "org.tensorflow:tensorflow-lite:2.11.0"
    implementation "org.tensorflow:tensorflow-lite-support:0.4.3"

    // SecurityProvider
    implementation "com.google.android.gms:play-services-basement:18.3.0"

    // HTTP e desserializador
    implementation "com.squareup.retrofit2:retrofit:2.9.0"
    implementation "com.squareup.retrofit2:converter-gson:2.9.0"
    implementation "com.squareup.okhttp3:okhttp:4.9.3"
    implementation "com.squareup.okhttp3:okhttp-tls:4.9.3"

    //exifInterface
    implementation "androidx.exifinterface:exifinterface:1.0.0"

    // Biblioteca principal CameraX usando a implementação camera2
    // A linha a seguir é opcional, pois a biblioteca principal é incluída indiretamente por camera-camera2
    implementation "androidx.camera:camera-core:1.1.0"
    implementation "androidx.camera:camera-camera2:1.1.0"
    // Se você quiser usar adicionalmente a biblioteca CameraX Lifecycle
    implementation "androidx.camera:camera-lifecycle:1.1.0"
    // Se você quiser usar adicionalmente a classe View do CameraX
    implementation "androidx.camera:camera-view:1.1.0"

    // Verificações de root
    implementation "com.scottyab:rootbeer-lib:0.0.8"

    // Commons Imaging (para imagens, dados EXIF e assim por diante. anteriormente conhecido como Apache Commons Sanselan)
    implementation "org.apache.commons:commons-imaging:1.0-alpha3"

    // Kotlin
    implementation "androidx.core:core-ktx:1.7.0"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.5.31"
}

Permissões em tempo de execução

Estas são as permissões de tempo de execução do Android:

Permissão
Motivo
Obrigatório

CÂMERA

Para capturar fotos dos documentos

Necessário apenas no fluxo de captura pela câmera

READ_EXTERNAL_STORAGE

Para acessar o armazenamento externo do dispositivo e selecionar documentos no fluxo de upload. Esta permissão é necessária apenas para versões inferiores à API33

Necessário apenas no fluxo de envio

Estas são as permissões de tempo de execução do iOS:

Permissão
Motivo
Obrigatório

Privacidade - Descrição de Uso da Câmera

Para capturar a(s) foto(s) do documento

Necessário apenas no fluxo de captura pela câmera

Privacidade - Descrição de Uso da Biblioteca de Fotos

Para realizar a abertura da galeria

Necessário apenas no fluxo de envio

Configurações da plataforma

Se a sua versão do Gradle for anterior à 7, adicione estas linhas ao seu build.gradle.

Se a sua versão do Gradle for 7 ou mais recente, adicione estas linhas ao seu settings.gradle.

Adicione suporte ao Java 8 (ignore este código se o Java 8 estiver habilitado) e ao TensorFlow Model ao seu build.gradle arquivo.

O compileOptions a configuração é necessária para as funções lambda internas do SDK, que foram lançadas no Java 8. A noCompress configuração diz ao compilador para não compactar arquivos com a .tflite extensão usada no DocumentDetector.

Para personalizar a cor principal do SDK, você precisa garantir que a biblioteca Material Design esteja importada no seu app. Adicione a seguinte dependência ao seu arquivo build.gradle:

No info.plist arquivo, adicione as permissões abaixo:

Permissão
Motivo
Obrigatório

Privacidade - Descrição de Uso da Câmera

Para capturar a(s) foto(s) do documento

Necessário apenas no fluxo de captura pela câmera

Privacidade - Descrição de Uso da Biblioteca de Fotos

Para realizar a abertura da galeria

Necessário apenas no fluxo de envio

Nosso SDK tem traduções para três idiomas (inglês, português e espanhol). Para garantir que ele funcione corretamente de acordo com o idioma do seu sistema operacional, adicione o seguinte ao Info.plist do seu app (se ainda não tiver feito isso):

Observe que o framework gerado para a implementação iOS do nosso SDK é estático. Este é um detalhe importante a considerar durante o desenvolvimento.

Motivo: o uso de um framework estático se deve à nossa dependência da TensorFlowLiteSwift biblioteca.

Essa abordagem foi escolhida para proporcionar uma melhor experiência de desenvolvimento, garantindo integração suave e desempenho ideal.

Documentos suportados

Atualmente, os documentos suportados são:

Instanciando o SDK

Para criar uma DocumentDetector instância, dois parâmetros obrigatórios devem ser fornecidos:

Parâmetro
Descrição

mobileToken

Token de uso associado à sua conta CAF

captureFlow

Define o fluxo de captura do documento. Crie uma List<DocumentCaptureFlow> para configurar cada etapa de captura.

DocumentCaptureFlow

Cada DocumentCaptureFlow elemento da lista será uma etapa de captura.

O DocumentCaptureFlow a classe tem as seguintes configurações:

DocumentType documentType

Identifica qual documento será solicitado para captura na respectiva etapa. Você pode escolher na Documentos suportados lista.


InstructionalPopupSettingsAndroid? androidCustomization

Personalize a ilustração e o rótulo do documento no popup instrucional para dispositivos Android.

Parâmetro
Descrição

String? documentLabel

Altere o rótulo do documento exibido no popup. Para personalizar isso, basta fornecer um String elemento.

String? documentIllustration

Altere a ilustração do documento exibida no popup. Para personalizar isso, você deve fornecer o nome do arquivo com a ilustração personalizada que você criou na res/drawable pasta do seu app Android.


InstructionalPopupSettingsIOS? iOSCustomization

Personalize a ilustração e o rótulo do documento no popup instrucional para dispositivos iOS.

Parâmetro
Descrição

String? documentLabel

Altere o rótulo do documento exibido no popup. Para personalizar isso, você só precisa fornecer um String elemento.

String? documentIllustration

Altere a ilustração do documento exibida no popup. Para personalizar isso, você deve fornecer o nome do Image Set com a ilustração personalizada que você criou no Asset Catalog do seu app iOS.

Exemplo de implementação

Este é um exemplo de como instanciar o SDK e capturar seus resultados:

Opções do DocumentDetector

setStage(CafStage stage)

Usado para redirecionar o SDK para o ambiente desejado na API CAF.

Opções

CafStage.beta CafStage.prod

Configuração padrão

CafStage.prod

setUseAnalytics(bool useAnalytics)

Habilita/desabilita a coleta de dados para fins de análise - logs em casos de bugs e erros ou identificação de perfil de fraude.

Configuração padrão

true

setPersonId(String personId)

Define o identificador do usuário para fins de identificação de perfil de fraude e para auxiliar na identificação de logs de Analytics em casos de bugs e erros.

setNetworkSettings(int requestTimeoutInSeconds)

Define o tempo limite das solicitações. Esse valor é representado em segundos.

Configuração padrão

Por padrão, o tempo limite é 60s.

setUrlExpirationTime(String urlExpirationTime)

Define o tempo que a URL da imagem permanecerá no servidor até expirar. Espere receber um intervalo de tempo entre 30m para 30d.

urlExpirationTime exemplo

  • 30m: Para definir apenas minutos

  • 24h: Para definir apenas hora(s)

  • 1h 10m: Para definir hora(s) e minuto(s)

  • 10d: Para definir dia(s)

Configuração padrão

Por padrão, está definido para 3h.

setDisplayPopup(bool displayPopup)

Ativa/Desativa a pré-visualização com popup das instruções antes de cada etapa de captura de documento.

Configuração padrão

true

setCurrentStepDoneDelayAndroid(bool enableDelay, int millisecondsDelay)

Adie a atividade após a conclusão de cada etapa de captura. Esse valor é representado em milissegundos.

Configuração padrão

Por padrão, não há atraso.

setCurrentStepDoneDelayIOS(int secondsDelay)

Adie a visualização após a conclusão de cada etapa de captura. Esse valor é representado em segundos.

Configuração padrão

Por padrão, não há atraso.

setPreviewSettings(PreviewSettings previewSettings)

Ativa/desativa a pré-visualização da foto do documento para o usuário, para que ele possa verificar se está tudo ok antes de enviá-la.

Crie um arquivo PreviewSettings elemento com as configurações desejadas.

Configuração padrão

Por padrão, a pré-visualização está desativada.

Opções de PreviewSettings

bool show

Ativa/Desativa o recurso de pré-visualização da captura do documento.


String? title

Personalize o título da visualização.


String? subtitle

Personalize o subtítulo da visualização.


String? confirmButtonLabel

Personalize o texto do botão de confirmação. Esse botão permite ao usuário confirmar e enviar a captura do documento.


String? retryButtonLabel

Personalize o texto do botão de tentar novamente. Esse botão permite ao usuário fazer outra captura.


setMessageSettings(MessageSettings messageSettings)

Configure mensagens personalizadas que são exibidas durante o processo de captura e análise.

Opções de MessageSettings

String? waitMessage

Mensagem exibida no processo de abertura.

Padrão: "Aguarde…"


String? fitTheDocumentMessage

Mensagem que aconselha a encaixar o documento na marcação.

Padrão: "Encaixe o documento na marcação"


verifyingQualityMessage

Mensagem exibida quando está verificando a qualidade da captura.

Padrão: "Verificando a qualidade…"


String? lowQualityDocumentMessage

Mensagem exibida quando a qualidade da captura é baixa.

Padrão: "Ops, não foi possível ler as informações. Tente novamente."


String? uploadingImageMessage

Mensagem exibida quando a captura está sendo enviada aos servidores.

Padrão: "Enviando imagem…"


String? sensorOrientationMessage

Mensagem exibida quando a orientação do dispositivo está errada.

Padrão: "Aponte a câmera para baixo"


String? sensorLuminosityMessage

Mensagem exibida quando o brilho ambiente é menor do que o esperado.

Padrão: "A área ao seu redor está muito escura"


String? sensorStabilityMessage

Mensagem exibida quando o parâmetro de estabilidade do dispositivo indica balanço excessivo.

Padrão: "Mantenha o dispositivo parado"


String? popupDocumentSubtitleMessage

Mensagem exibida no popup instrucional, fornecendo orientações sobre como obter a melhor captura do documento.

Padrão: "Coloque o documento sobre uma mesa, centralize-o na marcação e aguarde a captura automática."


String? scanDocumentMessage

Mensagem exibida para solicitar que um documento esteja visível na câmera.

Padrão: "Escaneie um documento"


String? getCloserMessage

Mensagem exibida para solicitar ao usuário que aproxime a câmera do documento.

Padrão: "Aproxime-se do documento"


String? centralizeDocumentMessage

Mensagem exibida para solicitar ao usuário que centralize o documento dentro do enquadramento da câmera.

Padrão: "Centralize o documento"


String? moveAwayMessage

Mensagem exibida para solicitar ao usuário que afaste a câmera do documento.

Padrão: "Afaste-se do documento"


String? alignDocumentMessage

Mensagem exibida para solicitar ao usuário que alinhe o documento dentro do enquadramento da câmera.

Padrão: "Alinhe o documento"


String? turnDocumentMessage

Mensagem exibida para solicitar ao usuário que gire o documento em 90 graus.

Padrão: "Gire o documento 90 graus"


String? documentCapturedMessage

Mensagem exibida para notificar que o documento foi capturado com sucesso.

Padrão: "Documento capturado"


String? holdItMessage

Apenas para Android Mensagem exibida no momento em que a captura está sendo realizada.

Padrão: "Mantenha assim"


String? popupConfirmButtonMessage

Apenas para Android Personalize o texto do botão de confirmação no popup instrucional.

Padrão: "OK, entendi"


String? wrongDocumentTypeMessage

Apenas para Android Mensagem exibida quando o documento mostrado pelo usuário não é o esperado para a captura.

Padrão: "Ops, este documento não é ${rótulo do documento esperado}"


String? unsupportedDocumentMessage

Apenas para Android Mensagem exibida para informar ao usuário que o documento exibido não é suportado.

Padrão: "Ops, parece que este documento não é suportado."


String? documentNotFoundMessage

Apenas para Android Mensagem exibida para notificar que nenhum documento foi detectado.

Padrão: "Não foi encontrado nenhum documento."


setUploadSettings(UploadSettings uploadSettings)

Define a configuração para o fluxo de envio de documentos. Ao ativar essa opção, o usuário será solicitado a enviar o arquivo do documento em vez de capturá-lo com a câmera do dispositivo. Essa opção também inclui verificações de qualidade.

Crie um arquivo UploadSettings elemento com as configurações desejadas.

Configuração padrão

Por padrão, esse recurso está desativado.

Opções de UploadSettings

bool? compress

Ativa/desativa a compressão do arquivo antes do envio. Se ativada, ela segue as definições de Android e iOS para qualidade de compressão:


List<FileFormatAndroid>? fileFormatsAndroid

Define o formato de arquivo que será aceito para upload. As opções são:

.pdf, .jpg, .jpeg, .png, .heif.


List<FileFormatIOS>? fileFormatsIOS

Define o formato de arquivo que será aceito para upload. As opções são:

.pdf, .jpeg, .png.


int? maxFileSize

Especifica o tamanho máximo do arquivo para upload, em kilobytes (kB).

1000kB = 1MB.

O valor padrão é 10MB.


setCountryCodeList(List<CountryCodesList>? countryCodeList)

Restrinja a aceitação de documentos de passaporte àqueles emitidos apenas por um país específico ou por uma lista predefinida de países.

Crie um arquivo List<CountryCodesList> com os códigos dos países desejados.

countryCodeList exemplo

setAndroidSettings(AndroidSettings androidSettings)

Defina as configurações exclusivas da plataforma Android.

Crie um AndroidSettings elemento com as configurações desejadas.

opções AndroidSettings

SensorSettingsAndroid? sensorSettings

Configure os parâmetros do sensor de luminosidade ambiente, orientação do dispositivo e estabilidade para garantir que o documento seja capturado em condições ideais.

int? luminositySensorSettings

Define o limite entre brilho ambiente aceitável/inaceitável.

Quanto menor o valor definido, menos sensível o sensor de orientação será.

Defina disableLuminositySensor: true se você não quiser usar este sensor.

Configuração padrão

As configurações padrão são 5 lx.


double? orientationSensorSettings

Define o limite entre orientação correta/incorreta do dispositivo.

Quanto maior o valor definido, menos sensível o sensor de orientação será.

Defina disableOrientationSensor: true se você não quiser usar este sensor.

Configuração padrão

A configuração padrão é 3.0 m/s²


StabilitySensorSettings? stabilitySensorSettings

Define as configurações do sensor de estabilidade.

double stabilityThreshold

Define o limite entre estável/instável, na variação em m/s² entre as duas últimas coletas do sensor. Quanto maior o valor definido, menos sensível o sensor de estabilidade será.


int stabilityDurationMillis

Especifica a duração, em milissegundos, que o dispositivo deve permanecer parado para ser considerado estável.

Defina disableStabilitySensor: true se você não quiser usar este sensor.

Configuração padrão

A configuração padrão é stabilityDurationMillis: 2000 e stabilityThreshold: 0.5


List<CaptureStage>? captureStages

CaptureStage é um recurso que determina o nível de exigência para a captura do documento. Assim que o fluxo de captura de documento começa, um temporizador é ativado. Durante o tempo definido, as configurações especificadas em cada uma das etapas configuradas são aplicadas. É possível definir uma lista de CaptureStages para aliviar gradualmente os requisitos de captura do documento ao longo do tempo. Esse recurso existe devido à diversidade de hardware de câmera em dispositivos Android, evitando que o usuário fique preso no fluxo de captura de documento durante seu onboarding.

captureStages exemplo

Configuração padrão

A configuração padrão consiste na seguinte ordem de CaptureStages:

  • CaptureStage 1: captureMode: CaptureMode.automatic, wantSensorCheck: true, durationMillis: 30000;

  • CaptureStage 2: captureMode: CaptureMode.automatic, wantSensorCheck: false, durationMillis: 15000;

  • CaptureStage 3: captureMode: CaptureMode.manual, wantSensorCheck: false, durationMillis: null;


int? compressQuality

Defina a qualidade no processo de compressão. Por padrão, todas as capturas passam por compressão.

O valor deve estar entre 80 e 100, em que 100 é a maior qualidade de compressão.

Configuração padrão

A qualidade padrão de compressão é 90.


AndroidCameraResolution? cameraResolution

Defina a resolução da captura do documento.

As opções são fullHd, quadHd e ultraHd.

Configuração padrão

Por padrão, a resolução é fullHd.


SecuritySettings? securitySettings

Estamos constantemente tomando medidas para tornar o produto cada vez mais seguro, mitigando uma série de ataques observados no processo de captura e, consequentemente, reduzindo o máximo possível de fraudes de identidade. O SDK possui alguns bloqueios que podem impedir sua execução em determinados contextos. Você pode desativar essas validações para fins de teste.

Para configurar as validações de segurança, você pode usar estas opções:

bool? enableGoogleServices

Permite ativar ou desativar recursos do SDK que utilizam os Serviços do Google.


bool? useRoot

Permite ativar ou desativar o SDK para ser executado em dispositivos com root.


bool? useEmulator

Permite ativar ou desativar o SDK para ser executado em dispositivos emulados.


bool? useDeveloperMode

Permite ativar ou desativar o SDK para ser executado em dispositivos com o modo de desenvolvedor ativado.


bool? useAdb

Permite ativar ou desativar o SDK para ser executado no modo de depuração Android Debug Bridge (ADB).


bool? useDebug

Permite ativar ou desativar o SDK para ser executado em um aplicativo em modo de depuração.


Configuração padrão


String? customStyle

Defina o estilo personalizado do seu app para alterar a cor primária do SDK.

Para personalizar, crie um style.xml arquivo de recurso no seu app e adicione este trecho de estilo a ele, substituindo os valores dentro dos placeholders:


FeedbackColorsAndroid? feedbackColors

Personalize as cores de feedback da interface a serem exibidas.

Para personalizar as cores de feedback da interface no seu app, siga estas etapas:

  • Crie um arquivo colors.xml arquivo de recurso no diretório res/values do seu app.

  • Defina as cores para os diferentes tipos de feedback: padrão, sucessoe error.

Aqui está uma versão aprimorada do colors.xml arquivo com placeholders para os valores hexadecimais das cores:

setIOSSettings(IOSSettings iosSettings)

Defina configurações exclusivas da plataforma iOS.

Crie um IOSSettings elemento com as configurações desejadas.

SensorSettingsIOS? sensorSettings

Configure os parâmetros de limiar do sensor de luminosidade ambiente, orientação do dispositivo e estabilidade para garantir que o documento seja capturado em condições ideais.

double? luminositySensorSettings

Define o limite entre brilho ambiente aceitável/inaceitável.

Quanto menor o valor definido, menos sensível o sensor de orientação será.

Configuração padrão

A configuração padrão é -3.


double? orientationSensorSettings

Define o limite entre orientação correta/incorreta do dispositivo com base na variação das duas últimas leituras do sensor acelerômetro coletadas do dispositivo.

Quanto maior o valor definido, menos sensível o sensor de orientação será.

Configuração padrão

A configuração padrão é 0.3.


double? stabilitySensorSettings

Define o limite entre dispositivo estável/instável com base na variação das duas últimas leituras do sensor giroscópio coletadas do dispositivo.

Quanto maior o valor definido, menos sensível o sensor de estabilidade será.

Configuração padrão

A configuração padrão é 0.3.


double? captureCompressionQuality

Defina a qualidade no processo de compressão. Por padrão, todas as capturas passam por compressão. O método espera valores entre 0.8 e 1.0 como parâmetro, em que 1.0 é a melhor qualidade de compressão.

Configuração padrão

A qualidade padrão de compressão é 0.9.


bool? enableManualCapture

Ative a opção de captura manual. Com esta configuração ativado, você pode especificar o tempo - em segundos - até que a captura manual seja ativada usando o manualCaptureActivationDelay parâmetro.

Configuração padrão

Por padrão, a captura manual está definida como false.

Em dispositivos abaixo do iOS 13, este recurso está sempre true, não há captura automática.


int? manualCaptureActivationDelay

Defina o atraso de tempo para habilitar a opção de captura manual para o usuário.

Para habilitar o recurso de captura manual, use enableManualCapture: true parâmetro.

Configuração padrão

Por padrão, o temporizador é definido como 45 segundos.


bool? enableMultiLanguage

Esta configuração ativa ou desativa o suporte a vários idiomas (inglês, espanhol, português brasileiro). Se desativado, o idioma padrão será o português brasileiro.

Configuração padrão

true


IOSCameraResolution? cameraResolution

Defina a resolução da captura do documento.

As opções são fullHd e ultraHd.

Configuração padrão

Por padrão, a resolução é fullHd.


CustomLayoutIOS? customLayout

Personalize as configurações de layout do seu app iOS.

Nessas opções você pode alterar a cor dos botões, a cor dos feedbacks da interface e a fonte do app.

Resultados do DocumentDetectorEvent

DocumentDetectorEvent é uma classe abstrata que representa diferentes tipos de eventos.

É usada para criar uma instância de uma das subclasses de evento com base em uma entrada de mapa, que vem do resultado do SDK.

Dependendo do tipo de evento, cria uma instância de DocumentDetectorEventClosed, DocumentDetectorEventSuccess, ou DocumentDetectorEventFailure. Se o evento não for reconhecido, lança uma exceção interna.

Essa configuração permite uma forma estruturada e segura em relação a tipos para lidar com diferentes resultados do processo de captura de documento no SDK.

DocumentDetectorEventClosed

Esta classe representa um evento em que a captura do documento foi encerrada pelo usuário, seja ao pressionar o botão de fechar no canto superior direito ou ao enviar o app para segundo plano.

DocumentDetectorEventSuccess

Esta classe representa um evento de captura de documento bem-sucedido. O documento do usuário foi capturado com sucesso, e as URLs para download das capturas foram retornadas. Inclui:

List<Capture>? captures

Uma lista de Captura objetos que representam os documentos capturados. Captura inclui:

String? imagePath

Caminho completo do arquivo de imagem no dispositivo do usuário.


String? imageUrl

URL do arquivo do documento no servidor da Caf. Esta URL tem um tempo de expiração, que pode ser definido com o setUrlExpirationTime método.


String? label

Rótulo do documento capturado, por exemplo: cnh_front, rg_back, passport...


double? quality

Qualidade inferida pelo algoritmo de qualidade do documento, variando entre 0 e 5.


String? documentType

O tipo do documento capturado

String? trackingId

Um ID para rastrear a execução da captura.

DocumentDetectorEventFailure

Esta classe representa uma falha no processo de captura de documento. O documento do usuário não foi capturado com sucesso, o errorType e errorMessage parâmetro contém o motivo da falha. Inclui:

String? errorType

Informações sobre o tipo de erro retornado pelo SDK. Abaixo estão os tipos de erro e suas causas:

Tipo
Motivo
Exemplo

AvailabilityReason

O SDK ainda não está disponível para uso. O errorMessage parâmetro trará mais instruções.

O armazenamento interno do dispositivo está cheio ao instalar o app, e o modelo de detecção facial não pode ser instalado junto.

InvalidTokenReason

O token informado não é válido para o produto correspondente.

Se você estiver usando um token expirado ou inexistente.

LibraryReason

Quando uma biblioteca interna do SDK não pode ser iniciada.

Esquecer de definir o aaptOptions noCompress configuração causará essa falha no DocumentDetector.

NetworkReason

Falha na conexão com a internet.

O usuário estava sem internet durante a execução do SDK.

PermissionReason

Está faltando alguma permissão obrigatória para executar o SDK.

Iniciar o SDK sem a permissão da câmera concedida.

SecurityReason

Quando o SDK não pode ser iniciado por um motivo de segurança.

Quando o dispositivo está com root. Consulte código de erro de segurança para mais motivos.

ServerReason

Quando uma solicitação do SDK recebe um código de status de falha.

Se uma API interna estiver instável.

StorageReason

Não há espaço no armazenamento interno do dispositivo do usuário.

Quando não há espaço no armazenamento interno durante a captura da foto do documento.

Tipo
Motivo
Exemplo

InvalidTokenReason

O token informado não é válido para o produto correspondente.

Se você estiver usando um token expirado ou inexistente.

NetworkReason

Falha na conexão com a internet.

O usuário estava sem internet durante a execução do SDK.

PermissionReason

Está faltando alguma permissão obrigatória para executar o SDK.

Iniciar o SDK sem a permissão da câmera concedida.

ServerReason

Quando uma solicitação do SDK recebe um código de status de falha.

Se uma API interna estiver instável.

StorageReason

Não há espaço no armazenamento interno do dispositivo do usuário.

Quando não há espaço no armazenamento interno durante a captura da foto do documento.

String? errorMessage

Uma mensagem que descreve o erro.

int? securityErrorCode

Um código de erro específico do Android, indicando o tipo de falha na validação de segurança:

  • 100 - bloqueando dispositivos emulados;

  • 200 - bloqueando dispositivos com root;

  • 300 - bloqueando dispositivos com opções de desenvolvedor ativadas;

  • 400 - bloqueando dispositivos com ADB ativado;

  • 500 - bloqueando dispositivos com depuração ativada;

Atualizado