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

Personalizando o Detector de Documentos

Este guia abrange a versão 7.0.0 e superiores. Para versões anteriores à 7.0.0, consulte a documentação legada.

Visão geral

Esta página é uma referência campo a campo de tudo o que os integradores podem alterar em Detector de Documentos: cópia, captura da UI, etapas do fluxo, comportamento de upload, proxy opcional, filtragem de passaporte, personalizações de strings e cores globais.


Interface de personalização

Pressuponha Certta.shared.configure(configuration:) já tenha sido executado com um token móvel e ID do usuário. Importe UIKit e CafSDK (e faça o link DocumentDetector de acordo com sua distribuição).

1. Abertura mínima — UI padrão, frente e verso do RG

Usa CerttaDocumentDetectorUIConfiguration() para que todos os campos da UI usem os padrões do SDK. Apenas o fluxo é personalizado.

import UIKit
import CafSDK

final class DocumentFlowViewController: UIViewController {

    func startDocumentDetector() {
        CerttaDocumentDetector.shared.delegate = self

        let flow: [CafDocumentDetectorStep] = [
            CafDocumentDetectorStep(stepType: .rgFront),
            CafDocumentDetectorStep(stepType: .rgBack)
        ]

        let configuration = CerttaDocumentDetectorConfiguration(
            flow: flow,
            ui: CerttaDocumentDetectorUIConfiguration(),
            enableMultiLanguage: true
        )

        CerttaDocumentDetector.shared.open(from: self, configuration: configuration)
    }
}

extension DocumentFlowViewController: CerttaDocumentDetectorDelegate {
    func didFinish(result: String) {
        // Envie `result` para o seu backend (payload assinado).
    }

    func didFinishWith(_ error: CerttaError) {
        // Mapeie `error` / `error.message` para a UI (veja o README).
    }
}

Defina Certta.shared.delegate se precisar de certtaDidCancel() / certtaDidLog.

2. UI estruturada — seleção, instruções, moldura de captura, upload

Construa CerttaDocumentDetectorUIConfiguration campo por campo. Este exemplo habilita envio, personaliza as instruções, reduz as tentativas, e ajusta as cores da moldura durante a captura.

3. Cópia e ilustração por etapa

Use CafDocumentDetectorStep inicializadores para substituir rótulos, UIImageopcional, e mensagens para uma única etapa.

4. Personalizações de strings (CafDDCustomization)

Passe um ou mais structs de personalização dentro de CerttaDocumentDetectorCustomization. Elas se mapeiam para strings nativas de DD personalizadas (prévia, popup de upload, linhas de progresso, captura com falha).

5. Inicializador legado — CafDocumentDetectorLayout + CafInstructionsConfiguration

Quando você preferir não usar CerttaDocumentDetectorUIConfiguration, monte o layout, a configuração de instruções, e as configurações de upload você mesmo.

6. Ponte a partir do completo CafDocumentDetectorConfig

Se você já monta CafDocumentDetectorConfig (demo, JSON ou builder legado), envolva-o com init(from:). Os campos não armazenados em CerttaDocumentDetectorConfiguration ainda recebem os padrões do hub em tempo de execução — veja Mapeamento do Hub.

Observação: O proxy e a lista de passaportes em full são não encaminhados pelo mapeamento interno do hub do Certta da mesma forma que CafSDKProvider + CafDocumentDetectorConfig — para comportamento garantido de proxy / allowlist, use CafSDKProvider.Builder com um completo CafDocumentDetectorConfig (veja abaixo).

7. Controle total — CafSDKProvider.Builder + proxy / passaporte / atrasos

Use este caminho quando você precisar definir proxy, getUrlExpireTime, currentStepDoneDelay, allowedPassportCountryList, ou campos de captura manual exatamente. Pseudocódigo:

Exato CafSDKConfiguration e o tratamento do callback dependem do seu app; veja a referência de configuração e os exemplos do produto.

8. Ponte legado CafDocumentDetectorLayout + CafInstructionsConfiguration para CerttaDocumentDetectorUIConfiguration

Se você já tem CafDocumentDetectorLayout e CafInstructionsConfiguration (ou CafSelectDocumentConfig) de uma integração anterior, use:

Os padrões para as configurações de upload, showPreview, etc., são definidos dentro desse inicializador de ponte — ajuste os campos em ui após a construção, se necessário.

9. Cores da sessão antes de abrir o DD

Use UITraitCollection (ou sua camada de tema) para construir diferentes CafColorConfiguration valores para claro vs. escuro, se necessário.

10. Opcional: aquecer com loadSession


CerttaDocumentDetectorUIConfiguration

Tipo raiz para a UI estruturada. Os padrões abaixo correspondem ao Swift inicializador em CafSDK.

Propriedade
Tipo
O que faz
Padrão (típico)

documentSelectionScreen

CafDocumentDetectorDocumentSelectionScreen

Títulos/subtítulos para o seletor de tipo de documento ; rótulos por tipo. Se todos estiverem vazios, a configuração de seleção pode ser omitida internamente.

Veja a seção aninhada

layoutResourceName

String?

Reservado para hooks futuros de nativos de layout; não é usado pela UI padrão.

nil

instructionsScreen

CafDocumentDetectorInstructionsScreen

Pré-captura as instruções (título, mensagem, passos, botão, imagem de cabeçalho). Mapeia para captura campos de CafInstructionsConfiguration.

Veja a seção aninhada

captureScreen

CafDocumentDetectorCaptureScreen

Durante a captura: botão de fechar, cores da moldura (neutra / erro / sucesso), nome da fonte. Mapeia para CafDocumentDetectorLayout.

Veja a seção aninhada

as configurações de upload

CafUploadSettings

Se os uploads são executados, compressão, formatos, tamanho máximo.

enable: false (padrão da UI do Certta; alinhado com Android)

showPreview

Bool

Mostra prévia pós-captura antes de continuar.

true

requestTimeout

Int

Tempo limite da requisição em segundos (HTTP).

60

showPopup

Bool

Mostra popup de pré-captura (portão de instruções).

true

maxRetryAttempts

Int

Máx as tentativas quando a captura/validação falhar.

2

customização

CerttaDocumentDetectorCustomization

Wrapper para [CafDDCustomization] (texto do pop-up de upload, strings de pré-visualização, mensagens de progresso do upload, foto com falha).

Customizações vazias

CafDocumentDetectorDocumentSelectionScreen

Propriedade
Tipo
O que faz

título

String?

Título principal da tela do tipo de documento.

subtítulo

String?

Subtítulo / descrição abaixo do título.

titlesByDocumentKind

[CafDocumentTypeKey: String]?

Substituir rótulo por lógico grupo de documento (ex.: .rg, .cnh).

descriptionsByDocumentKind

[CafDocumentTypeKey: String]?

Substituir texto secundário por grupo.

CafDocumentTypeKey: rg, rgDigital (rg_digital), cnh, cnhDigital (cnh_digital), crlv, rne, ctps, passport, any.

CafDocumentDetectorInstructionsScreen

Propriedade
Tipo
O que faz
Padrão

ativado

Bool

Ative ou desative a etapa de instruções.

true

título

String?

Título da visualização de instruções.

nil

message

String?

Texto do corpo (ex.: como escanear).

nil

etapas

[String]?

Linhas de tópicos / etapas.

nil

primaryButtonTitle

String?

CTA principal (ex.: “Continuar”).

nil

headerImage

UIImage?

Imagem opcional acima do texto.

nil

CafDocumentDetectorCaptureScreen

Controles captura ao vivo chrome (sobreposição, controle de fechar, cores da moldura, tipografia).

Propriedade
Tipo
O que faz
Padrão

closeButtonImage

UIImage?

Personalizado fechar ícone.

nil

closeButtonSize

CGFloat?

Área de toque / tamanho do ícone.

nil

closeButtonTintColor

UIColor?

Tom para o controle de fechar.

nil

closeButtonContentMode

UIView.ContentMode?

Como a imagem é redimensionada.

nil

documentFrameNeutralColor

UIColor

Cor da moldura antes do retorno de validação.

.black

documentFrameValidationFailedColor

UIColor

Moldura quando a validação falha.

#E21B45

documentFrameValidationPassedColor

UIColor

Moldura quando a validação passa.

#0BAA43

fontName

String?

Fonte personalizada nome PostScript para a cópia do DD onde aplicada.

nil

CerttaDocumentDetectorCustomization

Propriedade
Tipo
O que faz

ddCustomizations

[CafDDCustomization]

Array de CafDDUploadCustomization, CafPreviewCustomization, CafUploadMessagesCustomization, CafFailedPhotoCustomization (veja as customizações do DD).


CerttaDocumentDetectorConfiguration (parâmetros)

Usado com CerttaDocumentDetector.shared.open(from:configuration:).

Recomendado: init(flow:ui:enableMultiLanguage:)

Entrada
Função

o fluxo

[CafDocumentDetectorStep] — necessário para uma sessão real (ordem das capturas).

ui

CerttaDocumentDetectorUIConfiguration — toda a interface descrita acima.

enableMultiLanguage

Propaga para o runtime (enableMultiLanguage). Padrão true.

Legado: init(flow:layout:uploadSettings:instructionsConfig:requestTimeout:showPreCapturePopup:showPreview:ddCustomizations:enableMultiLanguage:selectDocumentConfig:maxRetryAttempts:)

Parâmetro
Padrão
O que faz

o fluxo

[]

Etapas de captura.

o layout

CafDocumentDetectorLayout()

Veja Layout.

as configurações de upload

CafUploadSettings(enable: true)

Veja Upload.

a configuração de instruções

CafInstructionsConfiguration()

Veja Instruções.

requestTimeout

60

Segundos (TimeInterval).

showPreCapturePopup

true

Mesma função da UI showPopup.

showPreview

false

Pré-visualização pós-captura (o caminho padrão da UI geralmente é true por meio de CerttaDocumentDetectorUIConfiguration).

ddCustomizations

[]

Veja as customizações do DD.

enableMultiLanguage

true

Pacotes / comportamento multilíngue.

selectDocumentConfig

nil

Texto do seletor de documentos; veja Seleção.

maxRetryAttempts

2

Limite de tentativas.

init(from: CafDocumentDetectorConfig)

Copia todos os campos sobrepostos de um CafDocumentDetectorConfig. O hub Certta ainda se aplica fixos valores para campos não presentes em CerttaDocumentDetectorConfiguration ao montar a configuração de runtime (veja o README — mapeamento do Hub).


CafDocumentDetectorConfig (modelo completo)

Use com CafSDKProvider.Builder quando você precisar de todas as opções. Lista de propriedades (padrões de CafSDK):

Propriedade
Tipo
O que faz

o fluxo

[CafDocumentDetectorStep]

Etapas ordenadas.

o layout

CafDocumentDetectorLayout

Layout da UI de captura + cores de feedback + fonte.

as configurações de upload

CafUploadSettings

Pipeline de upload.

a configuração de instruções

CafInstructionsConfiguration

Conteúdo das instruções e das instruções de upload.

manualCaptureEnabled

Bool?

Permitir o caminho de captura manual quando suportado.

manualCaptureTime

TimeInterval

Tempo para captura manual.

requestTimeout

TimeInterval

Tempo limite de rede (segundos).

showPopup

Bool

Pop-up de instruções antes da captura.

proxySettings

CafProxySettings?

Opcional proxy reverso para o tráfego da API.

previewShow

Bool

Tela de pré-visualização pós-captura.

ddCustomizations

[CafDDCustomization]

Customizações de string / tela.

getUrlExpireTime

String?

Tratamento de expiração de URL de imagem personalizada quando aplicável.

enableMultiLanguage

Bool

Multilíngue.

currentStepDoneDelay

TimeInterval

Atraso entre etapas (segundos).

allowedPassportCountryList

[CafCountryCode]?

Restringir passport emissores (códigos no estilo ISO). nil = sem filtro adicional.

selectDocumentConfig

CafSelectDocumentConfig?

Strings da UI de seleção de documentos.

sdkType

CafSdkPlatform

Tag da plataforma (ex.: .nativeIos).

maxRetryAttempts

Int

Máx. de tentativas por etapa.


CafDocumentDetectorStep & CafDocumentStepType

Cada etapa é um alvo de captura, opcionalmente substituído para rótulos e recursos.

CafDocumentStepType

Caso
Significado

rgFront / rgBack / rgFull

Variações do documento de identidade brasileiro (RG).

cnhFront / cnhBack / cnhFull

Variações da CNH.

crlv

CRLV.

rneFront / rneBack

RNE.

ctpsFront / ctpsBack

CTPS.

passport

Passaporte.

any

Captura genérica / flexível.

CafDocumentDetectorStep campos

Propriedade
Tipo
O que faz

stepType

CafDocumentStepType

Qual lado do documento capturar.

customStepLabel

String?

Substituir o título da etapa na UI.

customIllustration

UIImage?

Ilustração personalizada para esta etapa.

showStepLabel

Bool

Mostrar ou ocultar o rótulo da etapa. Padrão true.

customMessage

String?

Mensagem de instrução específica da etapa.

customOkButtonTitle

String?

Título do botão primário para esta etapa.


CafDocumentDetectorLayout & cores de feedback

CafDocumentDetectorLayout

Propriedade / API
O que faz

closeButtonImage, closeButtonSize, closeButtonColor, closeButtonContentMode

Controle de fechar; use setCloseButton(size:color:image:contentMode:) para definir em uma única chamada.

feedbackColors

CafDocumentFeedbackColors — cores da linha da moldura; setFeedbackColors(_:).

fonte

Nome da fonte PostScript para o texto do DD aplicável. setFont(name:).

CafDocumentFeedbackColors

Propriedade
Padrão
O que faz

defaultColor

.black

Moldura neutra.

errorColor

#E21B45

Validação falhou.

successColor

#0BAA43

Validação aprovada.


CafInstructionsConfiguration

Dividir em captura e envio conteúdo das instruções (o Document Detector usa principalmente captura campos).

Propriedade
Usado para DD (caminho de captura)

ativado

Alternador principal das instruções.

captureTitle, captureDescriptionText, captureSteps, captureButtonTitle, captureHeaderImage

Tela de instruções antes da captura.

uploadTitle, uploadDescriptionText, uploadSteps, uploadButtonTitle, uploadHeaderImage

Instruções da fase de upload (se o seu fluxo as exibir).


CafSelectDocumentConfig & CafDocumentTypeKey

Propriedade
O que faz

screenTitle

Título da seleção de documentos.

descrição

Subtítulo / texto de ajuda.

customTitles

Mapear CafDocumentTypeKey → String para títulos por tipo.

customDescriptions

Mapear CafDocumentTypeKey → String para descrições por tipo.


CafUploadSettings & CafFileFormatWrapper

CafUploadSettings

Propriedade
Padrão
O que faz

ativar

true (em CafDocumentDetectorConfig init)

Ativar/desativar upload. UI da Certta o padrão geralmente é false por meio de CerttaDocumentDetectorUIConfiguration.

comprimir

true

Comprimir antes do upload.

fileFormats

PNG, JPEG, HEIF, PDF, HEIC

Permitidos CafFileFormatWrapper valores.

maximumFileSize

10_000_000

Tamanho máximo em bytes.

CafFileFormatWrapper

png, jpeg, pdf, heif, heic — mapeia para strings UTI internamente.


CafProxySettings

Propriedade
O que faz

hostname, port

Endpoint do proxy (obrigatório em init(hostname:port:)).

user, password

Autenticação opcional via setAuthentication(user:password:).


CafDDCustomization tipos

Todos conformam com CafDDCustomization. Passe-os dentro de CerttaDocumentDetectorCustomization.ddCustomizations ou CafDocumentDetectorConfig.ddCustomizations. Eles são aplicados ao DocumentDetector builder (setCustomStrings).

CafDDUploadCustomization

Pop-up em torno de envio confirmação: imagem, message, uploadButton, cancelButton.

CafPreviewCustomization

Pré-visualização tela após a captura: título, message, okButton, tryAgainButton.

CafUploadMessagesCustomization

Progresso strings durante o upload: sending, verifyingIntegrity, processingData, almostDone, timeBetweenMessages.

CafFailedPhotoCustomization

Captura ruim folha: título, descrição, continueButton.


Lista de permissões para passaporte (CafCountryCode)

allowedPassportCountryList: array de CafCountryCode (códigos no estilo ISO baseados em string, ex.: bra, EUA). Limita quais passport emissores são aceitos quando essa validação se aplica. nil significa que não há restrição baseada em lista.

A enumeração é grande; veja CafCountryCode.swift em CafSDK para a lista completa.


Cores globais

O Detector de Documentos respeita CafColorConfiguration fornecido via Certta (configurar / setColorConfiguration) para a UI compartilhada do CAF. Veja Cores e temas.


Atualizado