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)
app.json (o app.config.js). NFC está habilitado por defecto:
- Android: añade el repositorio Maven de Didit a Gradle, establece la propiedad de Gradle
diditSdkAndroidNfcEnabledy 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)
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:React Native CLI
Configuración de iOS
Añade el pod DiditSDK a tuPodfile (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:
Configuración de Android
Añade el repositorio Maven de Didit alsettings.gradle de nivel de proyecto:
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:
me.didit:didit-sdk-core en lugar de me.didit:didit-sdk), añade esto a android/gradle.properties:
true, para usar el SDK de Android completo con NFC.
Permisos
iOS
Añade las siguientes claves alInfo.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:-
Añade la capacidad NFC en Xcode:
- Selecciona tu target > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
-
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.
- Añade un archivo de entitlements con la lectura de etiquetas NFC habilitada:
Android
Los siguientes permisos están declarados en elAndroidManifest.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:- 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 objetoDiditConfig:
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 esCameraLens.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.Opciones avanzadas
Estas opciones solo están disponibles constartVerificationWithWorkflow, 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: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
TantostartVerification 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, cuandoshowCloseButton 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 elsession_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.