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)
app.json (ou app.config.js). O NFC vem ativado por padrão:
- Android: adiciona o repositório Maven da Didit ao Gradle, define a propriedade Gradle
diditSdkAndroidNfcEnablede 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)
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:React Native CLI
Configuração do iOS
Adicione o pod do DiditSDK ao seuPodfile (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:
Configuração do Android
Adicione o repositório Maven da Didit aosettings.gradle no nível do projeto:
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:
me.didit:didit-sdk-core em vez de me.didit:didit-sdk), adicione isto ao android/gradle.properties:
true, para usar o SDK completo do Android com NFC.
Permissões
iOS
Adicione as chaves a seguir aoInfo.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:-
Adicione a capability de NFC no Xcode:
- Selecione o seu target > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
-
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.
- Adicione um arquivo de entitlements com a leitura de tags NFC ativada:
Android
As permissões a seguir são declaradas noAndroidManifest.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:- 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 objetoDiditConfig:
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.Opções avançadas
Estas opções estão disponíveis apenas comstartVerificationWithWorkflow, 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: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
TantostartVerification 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, quandoshowCloseButton é 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 osession_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.