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

Repositório no GitHub

Consulte o código-fonte e os exemplos no GitHub

Pacote npm

@didit-protocol/sdk-react-native

SDK nativo: Esta é a abordagem recomendada para aplicações React Native e Expo. O SDK encapsula os SDK nativos do iOS e do Android para oferecer a melhor experiência ao utilizador, um tratamento otimizado da câmara e suporte NFC completo.


Requisitos

Requisitos da plataforma

O consentimento biométrico requer o SDK nativo 4.10.0 ou posterior. Para pessoas abrangidas pela legislação do Illinois, do Texas ou do Colorado, a Didit pode pedir consentimento biométrico explícito antes da primeira captura facial. Uma versão do React Native SDK que fixe os SDK nativos de iOS e Android 4.10.0 ou posterior apresenta esse passo. As versões anteriores não conseguem apresentá-lo: as respetivas sessões decorrem como antes, e a decisão indica que o consentimento não foi recolhido (biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Atualize se verificar pessoas nesses estados.

Instalação

Expo (recomendado)

Em seguida, adicione o plugin de configuração ao seu app.json (ou app.config.js). O NFC está ativado por predefiniçã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ências 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 o NFC, os identificadores de seleção ISO7816 em ios.infoPlist, no mesmo ficheiro. O D392F000260100000001 permite que o SDK leia o Japan My Number Card através do JPKI:

Desativar as dependências de NFC

Para compilar sem suporte a NFC (binário mais pequeno, sem necessidade da capacidade NFC), passe as opções do plugin:
Quando o NFC está desativado, não precisa da capacidade NFC do iOS, dos direitos de NFC nem da configuração de provisionamento relacionada com o NFC.
Este SDK usa módulos nativos (câmara, NFC) que não estão disponíveis no Expo Go. Tem de usar uma compilação de desenvolvimento ou executar npx expo prebuild para gerar os projetos nativos.

React Native CLI

Configuração do iOS

Adicione o pod DiditSDK ao seu Podfile (não está no CocoaPods trunk). O bloco abaixo respeita a variável de ambiente DIDIT_SDK_IOS_NFC_ENABLED, para que possa alternar, no momento da instalação, o subspec sem NFC (DiditSDK/Core):
A tag no URL do podspec tem de corresponder a diditNativeSdkVersions.ios na versão do pacote instalada. O React Native 4.13.2 fixa o iOS nativo em 4.13.2 e o Android nativo em 4.13.2. Não aponte o podspec para main: o pacote depende exatamente dessa versão nativa do iOS, pelo que, assim que main avançar, o CocoaPods vê dois requisitos incompatíveis para DiditSDK e todos os pod install falham. O plugin de configuração do Expo gera este URL por si; apenas o caminho do React Native CLI puro precisa de o escrever 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 do projeto:
Adicione o seguinte ao android/app/build.gradle da sua aplicação (dentro do bloco android { ... }) para resolver os conflitos de classes duplicadas do BouncyCastle e a duplicação do MANIFEST.MF do OSGI que as dependências transitivas do DiditSDK podem provocar:
Para compilar sem as dependências de NFC do Android (usa o artefacto 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 seguintes chaves ao Info.plist da sua aplicação. A falta das chaves de privacidade obrigatórias do iOS fará com que o iOS termine a aplicação assim que o SDK aceder a esse recurso protegido.

Configuração de NFC

Para ativar a leitura NFC de passaportes e cartões de identificação com chip:
  1. Adicione a capacidade NFC no Xcode:
    • Selecione o seu alvo > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
  2. Adicione os identificadores ISO7816 ao Info.plist:
D392F000260100000001 permite ao SDK ler o Cartão My Number do Japão através do JPKI: sem este identificador, o iOS não comunica o cartão ao SDK. A leitura do Cartão My Number ainda não está ativada em produção, e o identificador não altera nada para os outros documentos, por isso pode adicioná-lo desde já.
  1. Adicione um ficheiro de direitos (entitlements) com a leitura de etiquetas NFC ativada:
Certifique-se de que o perfil de aprovisionamento da aplicação inclui a capacidade NFC Tag Reading. Esta configuração de NFC não é necessária quando o NFC está desativado.

Android

As seguintes permissões são declaradas no AndroidManifest.xml do SDK e integradas automaticamente: As funcionalidades de hardware da câmara e de NFC são declaradas como opcionais (android:required="false"), pelo que a sua aplicação pode ser instalada em dispositivos sem estas funcionalidades.

Início rápido


Métodos de integração

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

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

Crie uma sessão no seu backend através da API de criação de sessão de verificação e, em seguida, passe o token ao SDK:
Esta abordagem dá-lhe controlo total sobre:
  • Associar sessões aos seus utilizadores (vendor_data)
  • Definir metadados personalizados
  • Configurar os retornos de chamada por sessão

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

Para integrações mais simples, o SDK pode criar sessões diretamente com o ID do seu fluxo:

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âmara

As opções de câmara correspondem às opções de câmara do SDK Web. Cada lente é CameraLens.Front ou CameraLens.Back. Se o dispositivo não tiver a lente pedida, o SDK usa a primeira câmara de que dispõe. O seletor de câmara também fica oculto em dispositivos que têm apenas uma câmara. Defina uma opção do seletor como false para impedir o utilizador de mudar da lente predefinida desse passo.
Temas e cores: As cores, os fundos e as definições do ecrã de introdução são configurados nas suas definições de Marca branca na Didit Console, e não na configuração do SDK. Isto garante uma identidade visual consistente em todas as plataformas.

Suporte a idiomas

O SDK suporta 54 idiomas. Se não for indicado nenhum idioma, o SDK usa o idioma do dispositivo, com o inglês como alternativa.
Ver todos os idiomas suportados →

Opções avançadas

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

Dados de contacto (pré-preenchimento e notificações)

Indique os dados de contacto para pré-preencher os formulários de verificação e ativar as notificações por e-mail:

Dados esperados (validação cruzada)

Indique os dados esperados do utilizador 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

Guarde metadados JSON personalizados com a sessão (não são apresentados ao utilizador):

Gestão de resultados

Tanto startVerification como startVerificationWithWorkflow devolvem uma Promise<VerificationResult>. O resultado é uma união discriminada: utilize o campo type para determinar o resultado.

Casos de resultado

Propriedades de SessionData

Tipos de erro

Ligação perdida

Se o dispositivo perder a ligação durante a verificação, o SDK apresenta um ecrã com a mensagem «Sem ligação à Internet», em vez de deixar um passo a carregar. Continua a verificar a ligação em segundo plano e fecha automaticamente o ecrã assim que o Didit volta a estar acessível; o utilizador prossegue a partir do passo em que estava. O ecrã disponibiliza Tentar novamente e, quando showCloseButton é true (o valor predefinido), Sair da verificação. Ao sair, a verificação termina com um resultado failed cujo erro é networkError, para que a sua aplicação saiba que o utilizador saiu devido à perda de ligação.

Exemplo completo de gestão de resultados


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

A integração pronta para produção: o seu backend cria a sessão, a sua aplicação RN recebe o session_token e o SDK executa o fluxo. A decisão final é enviada para o seu backend através de um 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 através de um webhook

Consulte o guia de Webhooks para obter mais detalhes sobre a verificação da assinatura HMAC.

Exemplo completo


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