Saltar al contenido principal
Un SDK multiplataforma de React Native que encapsula los SDK nativos de iOS y Android y ofrece una API unificada en TypeScript para la verificación de identidad.

Repositorio de GitHub

Consulta el código fuente y los ejemplos en GitHub

Paquete de npm

@didit-protocol/sdk-react-native

SDK nativo: Es el enfoque recomendado para apps de React Native y Expo. El SDK encapsula los SDK nativos de iOS y Android para ofrecer la mejor experiencia de usuario, una gestión optimizada de la cámara y compatibilidad completa con NFC.


Requisitos

Requisitos de plataforma

El consentimiento biométrico requiere la versión nativa 4.10.0 o posterior. Para las personas amparadas por la legislación de Illinois, Texas o Colorado, Didit puede solicitar un consentimiento biométrico explícito antes de la primera captura facial. Las versiones del SDK de React Native que fijan las versiones nativas de iOS y Android en 4.10.0 o posterior muestran ese paso. Las versiones anteriores no pueden mostrarlo: sus sesiones funcionan como antes y la decisión indica que el consentimiento no se recogió (biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Actualiza si verificas a personas de esos estados.

Instalación

Expo (recomendado)

A continuación, añade el plugin de configuración a tu app.json (o app.config.js). NFC está habilitado por defecto:
El plugin configura automáticamente ambas plataformas:
  • Android: añade el repositorio Maven de Didit a Gradle, establece la propiedad de Gradle diditSdkAndroidNfcEnabled y aplica las reglas de dependencias y empaquetado de BouncyCastle
  • iOS: añade el podspec de DiditSDK al Podfile (fijado a iOS 15 cuando NFC está habilitado)
El plugin no modifica Info.plist. Añade las claves de permisos de iOS y, para NFC, los identificadores de selección ISO7816 en ios.infoPlist del mismo archivo. D392F000260100000001 permite que el SDK lea la tarjeta My Number de Japón mediante JPKI:

Desactivar las dependencias de NFC

Para compilar sin compatibilidad con NFC (binario más pequeño, sin requerir capacidad NFC), pasa opciones al plugin:
Con NFC desactivado, no necesitas la capacidad NFC de iOS, los entitlements de NFC ni la configuración de aprovisionamiento relacionada con NFC.
Este SDK usa módulos nativos (cámara, NFC) que no están disponibles en Expo Go. Debes usar una development build o ejecutar npx expo prebuild para generar los proyectos nativos.

React Native CLI

Configuración de iOS

Añade el pod DiditSDK a tu Podfile (no está en el trunk de CocoaPods). El bloque siguiente respeta la variable de entorno DIDIT_SDK_IOS_NFC_ENABLED, de modo que puedes alternar la subspec sin NFC (DiditSDK/Core) en el momento de la instalación:
La etiqueta de la URL del podspec debe coincidir con diditNativeSdkVersions.ios de la versión del paquete instalada. React Native 4.9.1 fija iOS nativo en 4.9.1 y Android nativo en 4.9.1. No apuntes el podspec a main: el paquete depende de esa versión exacta de iOS nativo, así que en cuanto main avanza, CocoaPods ve dos requisitos incompatibles para DiditSDK y todos los pod install fallan. El plugin de configuración de Expo genera esta URL por ti; solo la ruta de React Native CLI sin Expo necesita escribirla a mano.
Después, instala las dependencias:
Para recompilar sin las dependencias de NFC, limpia CocoaPods y vuelve a ejecutar con la variable de entorno definida:

Configuración de Android

Añade el repositorio Maven de Didit al settings.gradle de nivel de proyecto:
Añade lo siguiente al android/app/build.gradle de tu app (dentro del bloque android { ... }) para resolver los conflictos de clases duplicadas de BouncyCastle y el archivo MANIFEST.MF de OSGI duplicado que pueden provocar las dependencias transitivas de DiditSDK:
Para compilar sin las dependencias de NFC de Android (usa el artefacto me.didit:didit-sdk-core en lugar de me.didit:didit-sdk), añade esto a android/gradle.properties:
Elimina esa propiedad, o establécela en true, para usar el SDK de Android completo con NFC.

Permisos

iOS

Añade las siguientes claves al Info.plist de tu aplicación. Si falta alguna de las claves de privacidad obligatorias de iOS, iOS cerrará la aplicación en cuanto el SDK acceda al recurso protegido correspondiente.

Configuración de NFC

Para habilitar la lectura NFC de pasaportes y documentos de identidad con chip:
  1. Añade la capacidad NFC en Xcode:
    • Selecciona tu target > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
  2. Añade los identificadores ISO7816 a Info.plist:
D392F000260100000001 permite que el SDK lea la tarjeta My Number de Japón mediante JPKI: sin él, iOS no notifica la tarjeta al SDK. La lectura de la tarjeta My Number aún no está habilitada en producción, y el identificador no cambia nada para otros documentos, así que puedes añadirlo ya.
  1. Añade un archivo de entitlements con la lectura de etiquetas NFC habilitada:
Asegúrate de que el perfil de aprovisionamiento de la aplicación incluya la capacidad NFC Tag Reading. Esta configuración de NFC no es necesaria si NFC está deshabilitado.

Android

Los siguientes permisos están declarados en el AndroidManifest.xml del SDK y se fusionan automáticamente: Las funciones de hardware de cámara y NFC se declaran como opcionales (android:required="false"), de modo que tu aplicación puede instalarse en dispositivos que no las tengan.

Inicio rápido


Métodos de integración

El SDK admite dos métodos de integración:

Método 1: token de sesión (recomendado para producción)

Crea una sesión en tu backend con la API de creación de sesiones de verificación y luego pasa el token al SDK:
Este enfoque te da control total para:
  • Asociar sesiones con tus usuarios (vendor_data)
  • Definir metadatos personalizados
  • Configurar callbacks por sesión

Método 2: ID de workflow (integración más sencilla)

Para integraciones más sencillas, el SDK puede crear sesiones directamente con el ID de tu flujo de verificación (workflow):

Configuración

Personaliza el comportamiento del SDK pasando un objeto DiditConfig:
Para startVerificationWithWorkflow, pasa la configuración dentro de options.config:

Opciones de configuración

Opciones de cámara

Las opciones de cámara coinciden con las opciones de cámara del Web SDK. Cada lente es CameraLens.Front o CameraLens.Back. Si el dispositivo no tiene la lente solicitada, el SDK usa la primera cámara disponible. El selector de cámara también se oculta en los dispositivos que tienen una sola cámara. Establece una opción de selector en false para restringir al usuario a la lente predeterminada de ese paso.
Temas y colores: los colores, los fondos y la configuración de la pantalla de introducción se definen en tu configuración de Marca blanca en la consola de Didit, no en la configuración del SDK. Así se garantiza una imagen de marca coherente en todas las plataformas.

Idiomas compatibles

El SDK admite 54 idiomas. Si no se especifica ningún idioma, el SDK usa la configuración regional del dispositivo, con el inglés como idioma de respaldo.
Ver todos los idiomas compatibles →

Opciones avanzadas

Estas opciones solo están disponibles con startVerificationWithWorkflow, donde el SDK crea la sesión por ti.

Datos de contacto (autocompletado y notificaciones)

Proporciona datos de contacto para autocompletar los formularios de verificación y habilitar las notificaciones por correo electrónico:

Datos esperados (validación cruzada)

Proporciona los datos esperados del usuario para validarlos automáticamente con los datos extraídos del documento:
Todos los campos de ExpectedDetails son opcionales. Consulta src/types.ts para ver el tipo completo.

Metadatos personalizados

Guarda metadatos JSON personalizados con la sesión (no se muestran al usuario):

Gestión de resultados

Tanto startVerification como startVerificationWithWorkflow devuelven una Promise<VerificationResult>. El resultado es una unión discriminada: usa el campo type para saber cómo terminó.

Casos de resultado

Propiedades de SessionData

Tipos de error

Conexión perdida

Si el dispositivo pierde la conexión durante la verificación, el SDK muestra una pantalla “No internet connection” en lugar de dejar un paso cargando. Sigue comprobando la conexión en segundo plano y cierra la pantalla por sí solo en cuanto se puede volver a conectar con Didit, y el usuario continúa desde el paso en el que estaba. La pantalla ofrece Try Again y, cuando showCloseButton es true (el valor predeterminado), Exit Verification. Salir termina la verificación con un resultado failed cuyo error es networkError, para que tu aplicación sepa que el usuario salió debido a la conexión.

Ejemplo completo de gestión de resultados


Ejemplo de extremo a extremo (sesión en el backend → SDK de React Native → webhook)

La integración lista para producción: tu backend crea la sesión, tu aplicación de RN recibe el session_token y el SDK ejecuta el flujo. La decisión final llega a tu backend mediante un webhook: nunca confíes solo en el resultado del lado del cliente.

1. Backend: crea la sesión

2. React Native: intercambia el token e inicia el SDK

3. Backend: recibe la decisión final mediante un webhook

Consulta la guía de webhooks para ver los detalles de la verificación de firma HMAC.

Ejemplo completo


Última modificación el 1 de noviembre de 2026