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)
app.json (ou app.config.js). O NFC está ativado por predefinição:
- Android: adiciona o repositório Maven da Didit ao Gradle, define a propriedade Gradle
diditSdkAndroidNfcEnablede 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)
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:React Native CLI
Configuração do iOS
Adicione o pod DiditSDK ao seuPodfile (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):
Configuração do Android
Adicione o repositório Maven da Didit aosettings.gradle do projeto:
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:
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 seguintes chaves aoInfo.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:-
Adicione a capacidade NFC no Xcode:
- Selecione o seu alvo > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
-
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á.
- Adicione um ficheiro de direitos (entitlements) com a leitura de etiquetas NFC ativada:
Android
As seguintes permissões são declaradas noAndroidManifest.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:- 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 objetoDiditConfig:
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.Opções avançadas
Estas opções só estão disponíveis comstartVerificationWithWorkflow, 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: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
TantostartVerification 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, quandoshowCloseButton é 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 osession_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.