Pular para o conteúdo principal
Um SDK multiplataforma para React Native que encapsula os SDKs nativos de iOS e Android e oferece uma API TypeScript unificada para verificação de identidade.

Repositório no GitHub

Veja o código-fonte e exemplos no GitHub

Pacote npm

@didit-protocol/sdk-react-native

SDK nativo: esta é a abordagem recomendada para apps React Native e Expo. O SDK encapsula os SDKs nativos de iOS e Android para oferecer a melhor experiência ao usuário, gerenciamento otimizado da câmera e suporte completo a NFC.


Requisitos

Requisitos de plataforma

O consentimento biométrico exige a versão nativa 4.10.0 ou posterior. Para pessoas amparadas pelas leis de Illinois, Texas ou Colorado, a Didit pode solicitar consentimento biométrico explícito antes da primeira captura facial. Uma versão do SDK para React Native que fixa as versões nativas de iOS e Android 4.10.0 ou posteriores exibe essa etapa. Versões anteriores não conseguem exibir a etapa: suas sessões funcionam como antes, e a decisão informa que o consentimento não foi coletado (biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Atualize se você verifica pessoas nesses estados.

Instalação

Expo (recomendado)

Em seguida, adicione o config plugin ao seu app.json (ou app.config.js). O NFC vem ativado por padrão:
O plugin configura automaticamente as duas plataformas:
  • Android: adiciona o repositório Maven da Didit ao Gradle, define a propriedade Gradle diditSdkAndroidNfcEnabled e aplica as regras de dependência e empacotamento do BouncyCastle
  • iOS: adiciona o podspec do DiditSDK ao Podfile (fixado no iOS 15 quando o NFC está ativado)
O plugin não edita o Info.plist. Adicione as chaves de permissão do iOS e, para NFC, os identificadores de seleção ISO7816 em ios.infoPlist no mesmo arquivo. D392F000260100000001 permite que o SDK leia o My Number Card do Japão por meio do JPKI:

Desativar as dependências de NFC

Para compilar sem suporte a NFC (binário menor, sem exigir a capacidade de NFC), passe opções ao plugin:
Com o NFC desativado, você não precisa da capacidade de NFC do iOS, dos entitlements de NFC nem da configuração de provisionamento relacionada a NFC.
Este SDK usa módulos nativos (câmera, NFC) que não estão disponíveis no Expo Go. Você deve usar um development build ou executar npx expo prebuild para gerar os projetos nativos.

React Native CLI

Configuração do iOS

Adicione o pod do DiditSDK ao seu Podfile (ele não está no trunk do CocoaPods). O bloco abaixo respeita a variável de ambiente DIDIT_SDK_IOS_NFC_ENABLED, para que você possa alternar para o subspec sem NFC (DiditSDK/Core) no momento da instalação:
A tag na URL do podspec deve corresponder a diditNativeSdkVersions.ios na versão instalada do pacote. O React Native 4.9.1 fixa o iOS nativo 4.9.1 e o Android nativo 4.9.1. Não aponte o podspec para main: o pacote depende exatamente dessa versão nativa do iOS, então, assim que main for atualizado, o CocoaPods encontra dois requisitos incompatíveis para DiditSDK e todo pod install falha. O config plugin do Expo gera essa URL para você; somente o caminho com o React Native CLI puro exige que ela seja escrita manualmente.
Em seguida, instale as dependências:
Para recompilar sem as dependências de NFC, limpe o CocoaPods e execute novamente com a variável de ambiente definida:

Configuração do Android

Adicione o repositório Maven da Didit ao settings.gradle no nível do projeto:
Adicione o seguinte ao android/app/build.gradle do seu app (dentro do bloco android { ... }) para resolver os conflitos de classes duplicadas do BouncyCastle e o arquivo duplicado MANIFEST.MF do OSGI que as dependências transitivas do DiditSDK podem causar:
Para compilar sem as dependências de NFC do Android (usa o artefato me.didit:didit-sdk-core em vez de me.didit:didit-sdk), adicione isto ao android/gradle.properties:
Remova essa propriedade, ou defina-a como true, para usar o SDK completo do Android com NFC.

Permissões

iOS

Adicione as chaves a seguir ao Info.plist do seu app. Se faltar alguma chave de privacidade obrigatória do iOS, o iOS encerrará o app assim que o SDK acessar o recurso protegido correspondente.

Configuração de NFC

Para ativar a leitura NFC de passaportes e documentos de identidade com chip:
  1. Adicione a capability de NFC no Xcode:
    • Selecione o seu target > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
  2. Adicione os identificadores ISO7816 ao Info.plist:
D392F000260100000001 permite que o SDK leia o My Number Card do Japão por meio do JPKI: sem ele, o iOS não disponibiliza o cartão ao SDK. A leitura do My Number Card ainda não está ativada em produção, e o identificador não altera nada para os demais documentos, então você já pode adicioná-lo.
  1. Adicione um arquivo de entitlements com a leitura de tags NFC ativada:
Verifique se o provisioning profile do app inclui a capability NFC Tag Reading. Essa configuração de NFC não é necessária quando o NFC está desativado.

Android

As permissões a seguir são declaradas no AndroidManifest.xml do SDK e mescladas automaticamente: Os recursos de hardware de câmera e NFC são declarados como opcionais (android:required="false"), para que o seu app possa ser instalado em dispositivos sem esses recursos.

Início rápido


Métodos de integração

O SDK oferece dois métodos de integração:

Método 1: token de sessão (recomendado para produção)

Crie uma sessão no seu backend usando a API Create Verification Session e, em seguida, passe o token para o SDK:
Essa abordagem dá a você controle total sobre:
  • A associação das sessões aos seus usuários (vendor_data)
  • A definição de metadados personalizados
  • A configuração de callbacks por sessão

Método 2: ID do workflow (integração mais simples)

Para integrações mais simples, o SDK pode criar sessões diretamente usando o ID do seu fluxo de verificação (workflow):

Configuração

Personalize o comportamento do SDK passando um objeto DiditConfig:
Para startVerificationWithWorkflow, passe a configuração dentro de options.config:

Opções de configuração

Opções de câmera

As opções de câmera são as mesmas das opções de câmera do Web SDK. Cada lente é CameraLens.Front ou CameraLens.Back. Se o dispositivo não tiver a lente solicitada, o SDK usa a primeira câmera disponível. O alternador de câmera também fica oculto em dispositivos que têm apenas uma câmera. Defina uma opção de alternador como false para restringir o usuário à lente padrão daquela etapa.
Temas e cores: cores, fundos e as configurações da tela de introdução são definidos nas suas configurações de White Label no Didit Console, e não na configuração do SDK. Isso garante uma identidade visual consistente em todas as plataformas.

Suporte a idiomas

O SDK oferece suporte a 54 idiomas. Se nenhum idioma for especificado, o SDK usa a localidade do dispositivo, com inglês como alternativa.
Ver todos os idiomas compatíveis →

Opções avançadas

Estas opções estão disponíveis apenas com startVerificationWithWorkflow, em que o SDK cria a sessão em seu nome.

Dados de contato (preenchimento prévio e notificações)

Forneça dados de contato para preencher previamente os formulários de verificação e ativar as notificações por e-mail:

Dados esperados (validação cruzada)

Forneça os dados esperados do usuário para a validação cruzada automática com os dados extraídos do documento:
Todos os campos de ExpectedDetails são opcionais. Consulte src/types.ts para ver o tipo completo.

Metadados personalizados

Armazene metadados JSON personalizados com a sessão (não exibidos ao usuário):

Tratamento de resultados

Tanto startVerification quanto startVerificationWithWorkflow retornam uma Promise<VerificationResult>. O resultado é uma união discriminada: use o campo type para identificar o desfecho.

Casos de resultado

Propriedades de SessionData

Tipos de erro

Perda de conexão

Se o dispositivo perder a conexão durante a verificação, o SDK exibe uma tela “No internet connection” em vez de deixar uma etapa carregando. Ele continua verificando em segundo plano e fecha a tela sozinho assim que a Didit volta a ficar acessível, e o usuário continua da etapa em que estava. A tela oferece Try Again e, quando showCloseButton é true (o padrão), Exit Verification. Sair encerra a verificação com um resultado failed cujo erro é networkError, para que seu app saiba que o usuário saiu por causa da conexão.

Exemplo completo de tratamento de resultados


Exemplo de ponta a ponta (sessão no backend → SDK React Native → webhook)

A integração pronta para produção: seu backend cria a sessão, seu app RN recebe o session_token e o SDK executa o fluxo. A decisão final é entregue ao seu backend por webhook. Nunca confie apenas no resultado do lado do cliente.

1. Backend: criar a sessão

2. React Native: trocar o token e iniciar o SDK

3. Backend: receber a decisão final por webhook

Consulte o guia de Webhooks para ver os detalhes da verificação de assinatura HMAC.

Exemplo completo


Última modificação em 1 de novembro de 2026