Guia Detalhado de Uso

Este guia apresenta todas as opções de configuração, personalização e uso do Certiface Doc SDK no Android.

Sumário

  1. 📌 Visão geral
  2. ✅ Requisitos de compatibilidade
  3. ⚙️Instalação
  4. 🚀 Inicialização do SDK
  5. 📦CertifaceDocConfig
  6. 🔍 Execução e callbacks
  7. 🧾CertifaceDocResult e erros
  8. 🎨 Customização — CertifaceDocTheme
  9. 🔤 Fontes (DocCoreFontsKey)
  10. 🧪 Ambiente de testes
  11. 🛠️ Boas práticas
  12. 💻 Aplicativo de exemplo
  13. 🔗 Links

📌Visão geral

O Certiface Doc SDK oferece documentoscopia (instruções, permissões, captura, QR, uploads, resultado) em Compose, com tema configurável. A dependência publicada é br.com.certiface:manager (versão alinhada ao release).


✅Requisitos de compatibilidade

ItemValor
Android mínimoAPI 26
compileSdk36 (referência do projeto)
Kotlin2.0.x
Java17
UIJetpack Compose (Material 3)
AmbientesHML, PRD

⚙️Instalação

settings.gradle.kts

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven("https://raw.githubusercontent.com/oititec/certiface-doc-versions/main")
    }
}

build.gradle.kts (app)

dependencies {
    implementation("br.com.certiface.doc:manager:1.0.0")
}

🚀Inicialização do SDK

import br.com.certiface.doc.manager.main.CertifaceDocSDK

val documentManager = CertifaceDocSDK.initialize(context, config)

📦CertifaceDocConfig

Criada com createSDKConfig (br.com.certiface.doc.manager.exports).

ParâmetroTipoObrigatórioDescrição
appKeyStringSimChave da aplicação.
environmentEnvironmentNão (HML)HML ou PRD.
themeCertifaceDocTheme?NãoCustomização; null = tema padrão.
enableCnhDigitalBooleanNão (false)Fluxo CNH digital.
enablePdfUploadBooleanNão (false)Envio de PDF.
val config = createSDKConfig(
    appKey = appKey,
    environment = Environment.PRD,
    theme = meuTemaOpcional,
    enableCnhDigital = true,
    enablePdfUpload = true
)

🔍Execução e callbacks

import br.com.certiface.doc.manager.exports.ResultCallback
import br.com.certiface.doc.domain.models.CertifaceDocResponse
import br.com.certiface.doc.domain.models.CertifaceDocResult

documentManager.start(
    config,
    object : ResultCallback<CertifaceDocResult> {
        override fun onSuccess(result: CertifaceDocResponse) {
            val payload = result.docResult
        }
        override fun onError(result: CertifaceDocResponse) {
            val erro = result.errorResponse
        }
    }
)

🧾CertifaceDocResult e erros

Variante CertifaceDocResultConteúdo
SuccessdocumentCode, documentData
Errormessage, code opcional
CancelledCancelamento

CertifaceDocResponse combina docResult e errorResponse; em falhas use CertifaceDocErrorType.


🎨Customização — CertifaceDocTheme

Esta secção cobre personalização visual do SDK. A ideia é simples: você monta um CertifaceDocTheme, escolhe apenas as etapas que quer ajustar e passa esse tema na configuração do SDK. No guia rápido o tema costuma ser null até você precisar aplicar a identidade visual do seu produto.

Em termos práticos, tudo começa com CertifaceDocTheme.build { }.

Método no temaEscopo
setInstructionsThemeInstruções iniciais e opções de documento
setPermissionThemePermissão de câmera
setCaptureThemeCaptura frente/verso
setLoadingDialogThemeLoading
setQrScreenThemeQR Code
setDocumentUploadThemeUpload PDF genérico
setCnhUploadThemeUpload CNH digital
setResultScreenThemeResultado
setInstructionScreenThemeInstruções complementares
setFontsKeyDocCoreFontsKeyR.font
setCustomScreensTelas 100% em Composables próprios

Há dois níveis de customização:

  • Granular: você altera cores, textos, ícones e dimensões de etapas específicas.
  • Completa: você substitui telas inteiras com setCustomScreens.

🎨Entrada do tema e formatos

import br.com.certiface.doc.domain.theme.CertifaceDocTheme
import br.com.certiface.doc.designsystem.ui.builders.DocCoreCustomInstructionsBuilder

val theme = CertifaceDocTheme.build {
    setInstructionsTheme(DocCoreCustomInstructionsBuilder.build { /* ... */ })
    // setPermissionTheme(PermissionCustomsBuilder.build { ... })
    // setCaptureTheme, setLoadingDialogTheme, setQrScreenTheme, ...
    // setFontsKey(mapOf(DocCoreFontsKey to R.font....))
}

val config = createSDKConfig(
    appKey = appKey,
    environment = environment,
    theme = theme,
    enableCnhDigital = true,
    enablePdfUpload = true
)
  • Cores: Int (R.color) ou String hex, conforme o método.
  • Medidas: bordas/raios em Float (ou Int onde aplicável).
  • Elementos extra: permitidos se não quebrarem o comportamento obrigatório do SDK.

📝Instruções

Para customizar a tela inicial e as opções de documento, use setInstructionsTheme(...) dentro do CertifaceDocTheme.build { }. Esse bloco concentra os ajustes visuais dessa etapa.

Os números na figura correspondem à tabela.

Tela de Instruções

IDSeçãoMétodos
(1)BacksetInstructionBackButtonIcon() · setInstructionBackButtonIconColor() · setInstructionBackButtonBackgroundColor() · setInstructionBackButtonBorderColor()
(2)BackgroundsetInstructionBackgroundColor() · setInstructionLoadingColor()
(3)Context imagesetInstructionContextImage()
(4)Bottom sheetsetInstructionBottomSheetColor() · setInstructionBottomSheetCornerRadius()
(5)TítulosetInstructionTitle() · setInstructionTitleColor()
(6)LegendasetInstructionCaption() · setInstructionCaptionColor()
(7)Opção documento físicosetInstructionPhysicalDocumentOption* (imagem, cores, borda, título, descrição, seta, etc.)
(8)Opção CNH digitalsetInstructionDigitalDocumentOption*
(9)Opção PDFsetInstructionFileDocumentOption*
(0)Status barsetInstructionStatusBarColor() · setInstructionStatusBarIsDarkIcons()

📋Instruções complementares

Para customizar essa etapa, use setInstructionScreenTheme(...). Aqui você consegue ajustar título, legenda, ícones e textos das instruções numeradas, imagem de contexto, botão voltar, botão continuar, bottom sheet e status bar.


📷Permissão de câmera

Para customizar a tela de permissão de câmera, use setPermissionTheme(...).

Tela de Permissão

IDSeçãoMétodos
(1)VoltarsetBackButtonIcon()
(2)FundosetBackgroundColor()
(3)Ícone câmerasetCameraIcon()
(4)TítulosetTitle() · setTitleColor()
(5)SubtítulosetSubTitle() · setSubTitleColor()
(6)PermitirsetPermissionButtonText() · setPermissionButtonColor() · setPermissionButtonTextColor()
(0)Status barsetStatusBarColor() · setStatusBarIsDarkIcons()

⏳Diálogo de carregamento

Para customizar o loading, use setLoadingDialogTheme(...).

Tela de Loading

IDSeçãoMétodos
(1)FundosetBackgroundColor()
(2)ProgresssetCircularProgressIndicatorColor() · setCircularProgressIndicatorSize() · setCircularProgressIndicatorWidth()
(3)Status barsetStatusBarColor() · setStatusBarIsDarkIcons()

🔳QR Code

Para customizar a etapa de leitura por QR Code, use setQrScreenTheme(...).

Tela QR Code

IDSeçãoMétodos
(1)Overlay / alvosetQrCodeOverlayImage() · setQrCodeSquareTargetColor()
(2)VoltarsetQrCodeBackButtonIcon() · setQrCodeBackButtonIconColor() · setQrCodeBackButtonBackgroundColor() · setQrCodeBackButtonBorderColor()
(3)Bottom sheetsetQrCodeBottomSheetColor() · setQrCodeBottomSheetCornerRadius()
(4)Título / legendasetQrCodeTitle() · setQrCodeTitleColor() · setQrCodeCaption() · setQrCodeCaptionColor()
(5)Botão arquivosetQrCodeFileButtonText() · setQrCodeFileButtonTextColor() · setQrCodeFileButtonBackgroundColor() · setQrCodeFileButtonBorderColor() · setQrCodeFileButtonCornerRadius()
(0)Status barsetQrCodeStatusBarColor() · setQrCodeStatusBarIsDarkIcons()

📤Upload (PDF / CNH digital)

Para customizar as telas de upload, use os métodos abaixo no tema:

  • setDocumentUploadTheme — PDF genérico
  • setCnhUploadTheme — CNH digital

Tela de Upload

IDSeçãoMétodos (resumo)
(1)Fundo / statussetUploadBackgroundColor() · setUploadStatusBarColor() · setUploadStatusBarIsDarkIcons()
(2)Voltar / fecharsetUploadBackButton* · setUploadCloseButton*
(3)Título / descriçãosetUploadFileTitle* · setUploadFileDescription*
(4)PickersetUploadFilePicker* · setUploadAreaHeightDp()
(5)Arquivo selecionadosetUploadSelectedFile* · setUploadFileName* · setUploadDeleteFileIcon* · setUploadSelectedFileSuccess*
(6)EnviarsetUploadSendButton*

Os setters dessa etapa seguem o prefixo setUpload..., sempre agrupados por área da tela.


🧾Resultado

Para customizar a tela final de sucesso ou erro, use setResultScreenTheme(...).

Tela de Resultado

IDSeçãoMétodos
(1)SucessosetSuccessBackgroundColor() · setSuccessIcon() · setSuccessText() · setSuccessTextColor()
(2)ErrosetErrorBackgroundColor() · setErrorIcon() · setErrorText() · setErrorTextColor()
(3)RetrysetRetryButtonColor() · setRetryButtonText() · setRetryButtonTextColor()
(4)Status bar OKsetStatusBarSuccessColor() · setStatusBarSuccessIsDarkIcons()
(5)Status bar errosetStatusBarErrorColor() · setStatusBarErrorIsDarkIcons()

📸Captura (frente/verso)

Para customizar a captura de frente e verso, use setCaptureTheme(...).

Os números na figura correspondem à tabela.

Tela de Captura

IDSeçãoMétodos
(1)VoltarsetBackButtonIcon() · setBackButtonColor()
(2)FecharsetCloseButtonIcon() · setCloseButtonColor()
(3)Indicador de frentesetFrontIndicatorText() · setFrontIndicatorImage() · setIndicatorColor() · setIndicatorTextColor() · setIndicatorTextFont() · setSelectedIndicatorColor()
(4)Indicador de versosetBackIndicatorText() · setBackIndicatorImage() · setIndicatorColor() · setIndicatorTextColor() · setIndicatorTextFont() · setSelectedIndicatorColor()
(5)Texto guiasetInstructionsGuideTextFront() · setInstructionsGuideTextBack() · setInstructionsGuideTextConfirmation() · setInstructionsGuideColor() · setInstructionsGuideFont()
(6)Área de captura e revisão da imagemsetCapturePreviewBorderColorUncaptured() · setCapturePreviewBorderColorCaptured()
(7)Fundo da telasetBackgroundColor()
(8)Botão de capturasetCaptureButtonIcon() · setCaptureButtonColor() · setCaptureButtonBorderColor()
(9)Bottom sheet de confirmaçãosetBottomSheetColor() · setBottomSheetCornerRadius()
(10)Mensagem principal da confirmaçãosetConfirmationMessageText() · setConfirmationMessageColor() · setConfirmationMessageFont()
(11)Botão refazersetRetryButtonText() · setRetryButtonColor() · setRetryButtonFont()
(12)Botão de confirmaçãosetConfirmButtonText() · setConfirmButtonTextConfirmation() · setConfirmButtonColor() · setConfirmButtonFont()

Observações:

  • A tabela segue a numeração visível na figura.
  • setCaptureStatusBarColor() e setCaptureStatusBarIsDarkIcons() são públicos, mas não aparecem numerados nessa ilustração.

⚙️setCustomScreens

Para substituir telas inteiras por Composables: setCustomScreens(CustomScreensBuilder.build { ... }), apenas nas etapas que quiser trocar. Para cores/textos por região, use os builders e tabelas acima.


🔤Fontes (DocCoreFontsKey)

Use setFontsKey(mapOf(DocCoreFontsKey to R.font....)) dentro de CertifaceDocTheme.build. As chaves disponíveis estão no enum DocCoreFontsKey (br.com.certiface.doc.designsystem.ui.doccore), por papel de texto em cada tela (instruções, permissão, captura, QR, upload CNH/PDF, resultado).


🧪Ambiente de testes

  • HML + AppKey de homologação.
  • Rede estável; permissão de câmera quando o fluxo exigir.

🛠️Boas práticas

  • Uma inicialização coerente com o ciclo de vida do app.
  • Tratar Cancelled e onError.
  • Preferir builders granulares; setCustomScreens só para UI totalmente própria.

💻 Aplicativo de exemplo

Se você quiser ver uma integração pronta, use o repositório certiface-sdk-demo como referência de implementação do app cliente:

O demo é útil para validar configuração, fluxo básico e estrutura de integração. Ainda assim, a referência de contrato continua sendo a API pública documentada neste guia.


Links