> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK KYC nativos para móvil: iOS, Android, RN y Flutter

> SDK KYC nativos de Didit para iOS, Android, React Native y Flutter: pasaporte NFC, prueba de vida y captura en el dispositivo. Desde $0.33 el KYC completo.

> [!NOTE]
>
> Estas versiones se refieren a los SDK de verificación de identidad. Los módulos y wrappers nativos de Authentication tienen una publicación independiente: consulta los [inicios rápidos de Authentication](https://docs.didit.me/authentication/overview.md).

Integra la verificación de Didit de forma nativa en tus aplicaciones móviles con nuestros SDK oficiales. Los SDK nativos ofrecen una **experiencia de usuario fluida**, **mejor rendimiento** y **acceso total a las capacidades del dispositivo** en comparación con las integraciones basadas en WebView.

> [!NOTE]
>
> ### **Enfoque recomendado**: para obtener la mejor experiencia de usuario, usa nuestros SDK nativos en lugar de la integración con WebView. Los SDK nativos gestionan de serie toda la complejidad de los permisos de cámara, la lectura NFC y la prueba de vida.

***

## Disponibilidad de los SDK

| Plataforma | Distribución | Última | NFC | Versión mínima | Documentación |
| - | - | - | :-: | - | - |
| iOS | Swift Package Manager, CocoaPods | 4.9.1 | ✅ (iOS 15+) | iOS 13.0+ (núcleo), iOS 15.0+ (NFC) | [Guía del SDK de iOS](https://docs.didit.me/integration/native-sdks/ios-sdk.md) |
| Android | Maven (repositorio propio, `me.didit:didit-sdk`) | 4.9.1 | ✅ | API 23+ (Android 6.0) | [Guía del SDK de Android](https://docs.didit.me/integration/native-sdks/android-sdk.md) |
| React Native | npm / yarn (`@didit-protocol/sdk-react-native`) | 4.9.1 | ✅ | RN 0.76+ (Nueva Arquitectura), iOS 13.0+ / Android API 24+ | [Guía del SDK de React Native](https://docs.didit.me/integration/native-sdks/react-native-sdk.md) |
| Flutter | pub.dev (`didit_sdk`) | 4.9.1 | ✅ | Flutter 3.3+, Dart 3.11+, iOS 13.0+ / Android API 23+ | [Guía del SDK de Flutter](https://docs.didit.me/integration/native-sdks/flutter-sdk.md) |
| Web (JS) | npm (`@didit-protocol/sdk-web`) | 0.4.0 | — | Cualquier navegador moderno | [Guía del SDK web](https://docs.didit.me/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **El consentimiento biométrico requiere el SDK nativo 4.10.0 o posterior.** Para las personas amparadas por la ley de Illinois, Texas o Colorado, Didit puede solicitar un [consentimiento biométrico](https://docs.didit.me/es/getting-started/biometric-consent.md) explícito antes de la primera captura facial. El flujo alojado (SDK web, WebView, navegador) y los SDK nativos de iOS y Android 4.10.0 o posterior muestran ese paso; React Native y Flutter lo muestran en una versión que fije el SDK nativo 4.10.0 o posterior. Un SDK nativo anterior a la 4.10.0, o uno que no informe de su versión, no puede: sus sesiones se ejecutan como antes y la decisión informa `biometric_consent.status: "pending"` con `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Actualiza si verificas a personas en esos estados.

### Novedades de la 4.9.1

Los selectores de país del documento y de la prueba de domicilio ahora se abren en el país detectado a partir de la dirección IP del usuario en iOS y Android, incluso cuando esa consulta termina después de que aparezca la pantalla.
Un país definido en la sesión o elegido por el usuario nunca se sobrescribe.
En Android, el encabezado y los campos de la sección de un cuestionario se muestran en el idioma del SDK, y la lectura de pasaportes por NFC ya no se bloquea en la variante completa.
Se ha mejorado el texto de verificación en ruso y kirguís en ambas plataformas.

### Novedades de la 4.9.0

Todos los SDK móviles nativos y multiplataforma ofrecen ahora un selector de idioma opcional en la pantalla de bienvenida de la verificación.
Establece `showLanguageSelector` en `true` para mostrar el mismo selector compacto y con búsqueda que usa el flujo de verificación web.
El selector está oculto por defecto, por lo que las integraciones existentes mantienen su comportamiento actual hasta que lo activen.

> [!NOTE]
>
> ### **Alternativa**: si todavía no hay un SDK nativo para tu plataforma, puedes usar la [integración con WebView](https://docs.didit.me/integration/web-sdks/webview-in-ios-android.md) como solución de respaldo.

***

## Cómo fluye una sesión de verificación

Todos los SDK nativos consumen la misma sesión de verificación de Didit. El flujo es el siguiente:

1. **Tu backend** llama a [`POST /v3/session/`](https://docs.didit.me/sessions-api/create-session) con `workflow_id` y cualquier contexto opcional (`vendor_data`, `contact_details`, `expected_details`, `metadata`, `callback`).
2. Didit devuelve un `session_id`, un `session_token` de corta duración y una `url` alojada.
3. **Tu app móvil** recibe el `session_token` de tu backend y se lo pasa al SDK (`startVerification(token: …)`).
4. El SDK nativo abre la interfaz de verificación, el usuario completa los pasos y el SDK devuelve un resultado con el `status` final de la sesión (`Approved`, `Declined`, `In Review`, etc.).
5. **Tu backend** recibe la decisión completa mediante un [webhook](https://docs.didit.me/integration/webhooks.md) (`webhook_type: "status.updated"`) y la guarda.

> [!NOTE]
>
> El resultado del SDK te indica el desenlace del flujo (el estado). La decisión completa (campos del documento, puntuaciones de coincidencia facial, coincidencias AML, datos NFC, advertencias) se entrega a tu servidor por webhook y también se puede obtener del endpoint [Retrieve Session Decision](https://docs.didit.me/sessions-api/retrieve-session.md). Nunca confíes solo en el resultado del lado del cliente para tomar decisiones de autorización.

Todos los SDK nativos admiten también un modo **UniLink** (solo el ID del flujo, sin necesidad de backend). Usa UniLink para prototipos rápidos y el método con token de sesión para producción.

***

## SDK de iOS

**Cuándo usarlo**: apps nativas en Swift / SwiftUI / UIKit dirigidas a iOS 13+.

Un SDK de iOS ligero y guiado por el servidor para la verificación de identidad, con una configuración mínima.

> **[Repositorio de GitHub](https://github.com/didit-protocol/sdk-ios)**
>
> Consulta el código fuente y los ejemplos en GitHub

**Funciones principales:**

* Compatibilidad con SwiftUI y UIKit
* Lectura NFC de pasaportes y documentos de identidad (iOS 15+; las variantes sin NFC `Core` y `AutoDetection` eliminan NFC y OpenSSL, y se despliegan en iOS 13+)
* 53 idiomas compatibles
* Temas de interfaz personalizables
* Integración con token de sesión o ID de flujo

**Inicio rápido:**

```swift theme={null}
import DiditSDK

// Start verification
DiditSdk.shared.startVerification(token: "your-session-token")

// Handle result
.diditVerification { result in
    switch result {
    case .completed(let session):
        print("Status: \(session.status)")
    case .cancelled:
        print("Cancelled")
    case .failed(let error, _):
        print("Error: \(error)")
    }
}
```

→ [**Documentación completa del SDK de iOS**](https://docs.didit.me/integration/native-sdks/ios-sdk.md)

***

## SDK de Android

**Cuándo usarlo**: apps nativas en Kotlin / Jetpack Compose / Java dirigidas a Android 6.0 (API 23) o superior.

Un SDK de Android ligero y guiado por el servidor para la verificación de identidad, con una configuración mínima.

> **[Repositorio de GitHub](https://github.com/didit-protocol/sdk-android)**
>
> Consulta el código fuente y los ejemplos en GitHub

**Funciones principales:**

* Compatibilidad con Kotlin y Jetpack Compose
* Lectura NFC de pasaportes y documentos de identidad (el artefacto opcional `me.didit:didit-sdk-core` elimina las dependencias de NFC)
* Detección automática de documentos y rostros basada en ML en API 24+ (con captura manual como alternativa en API 23)
* 53 idiomas compatibles
* Temas de interfaz personalizables
* Integración con token de sesión o ID de flujo

**Inicio rápido:**

```kotlin theme={null}
import me.didit.sdk.DiditSdk
import me.didit.sdk.VerificationResult

// Initialize in Application.onCreate()
DiditSdk.initialize(this)

// Start verification
DiditSdk.startVerification(token = "your-session-token") { result ->
    when (result) {
        is VerificationResult.Completed -> Log.d("Didit", "Status: ${result.session.status}")
        is VerificationResult.Cancelled -> Log.d("Didit", "Cancelled")
        is VerificationResult.Failed -> Log.e("Didit", "Error: ${result.error.message}")
    }
}
```

→ [**Documentación completa del SDK de Android**](https://docs.didit.me/integration/native-sdks/android-sdk.md)

***

## SDK de React Native

**Cuándo usarlo**: apps multiplataforma con React Native o Expo que necesitan una única API de TypeScript para iOS y Android (RN 0.76+, Nueva Arquitectura).

Un SDK multiplataforma de React Native que envuelve los SDK nativos de iOS y Android con una API de TypeScript unificada.

> **[Repositorio de GitHub](https://github.com/didit-protocol/sdk-react-native)**
>
> Consulta el código fuente y los ejemplos en GitHub

**Funciones principales:**

* Una única API de TypeScript para iOS y Android
* Compatibilidad con Expo con un config plugin sin configuración (requiere un development build, no Expo Go)
* Compatibilidad con React Native CLI
* Lectura NFC de pasaportes y documentos de identidad (desactívala con `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 53 idiomas compatibles (heredados de los SDK nativos)
* Integración con token de sesión o ID de flujo

**Inicio rápido:**

```tsx theme={null}
import { startVerification, VerificationStatus } from '@didit-protocol/sdk-react-native';

const result = await startVerification('your-session-token');

switch (result.type) {
  case 'completed':
    console.log('Status:', result.session.status);
    break;
  case 'cancelled':
    console.log('Cancelled');
    break;
  case 'failed':
    console.log('Error:', result.error.message);
    break;
}
```

→ [**Documentación completa del SDK de React Native**](https://docs.didit.me/integration/native-sdks/react-native-sdk.md)

***

## SDK de Flutter

**Cuándo usarlo**: apps multiplataforma con Flutter que necesitan una única API de Dart para iOS y Android (Flutter 3.3+, Dart 3.11+).

Un SDK multiplataforma de Flutter que envuelve los SDK nativos de iOS y Android con una API de Dart unificada.

> **[Paquete de pub.dev](https://pub.dev/packages/didit_sdk)**
>
> Consulta el paquete en pub.dev

**Funciones principales:**

* Una única API de Dart para iOS y Android
* Integración con los SDK nativos mediante platform channels
* Lectura NFC de pasaportes y documentos de identidad (desactívala con `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 53 idiomas compatibles (heredados de los SDK nativos)
* Integración con token de sesión o ID de flujo

**Inicio rápido:**

```dart theme={null}
import 'package:didit_sdk/sdk_flutter.dart';

final result = await DiditSdk.startVerification('your-session-token');

switch (result) {
  case VerificationCompleted(:final session):
    print('Status: ${session.status}');
  case VerificationCancelled():
    print('Cancelled');
  case VerificationFailed(:final error):
    print('Error: ${error.message}');
}
```

→ [**Documentación completa del SDK de Flutter**](https://docs.didit.me/integration/native-sdks/flutter-sdk.md)

***

## SDK web (JavaScript)

**Cuándo usarlo**: apps basadas en navegador y frameworks web (React, Vue, Angular, Next.js, Nuxt, Svelte, JS puro). El SDK web abre el flujo de verificación alojado en un modal o en un iframe integrado; para apps móviles, prefiere los SDK nativos anteriores.

Un SDK de JavaScript para aplicaciones web con compatibilidad con React, Vue, Angular, Next.js, Nuxt, Svelte y JS puro.

> **[Paquete de NPM](https://www.npmjs.com/package/@didit-protocol/sdk-web)**
>
> Consulta el paquete en npm

**Funciones principales:**

* Gestión programática de sesiones y callbacks de eventos
* Compatibilidad con React, Vue, Angular, Next.js, Nuxt, Svelte y JS puro
* Compatibilidad total con TypeScript
* Modos modal e integrado (inline)
* Gestión de estado para interfaces personalizadas

**Inicio rápido:**

```typescript theme={null}
import { DiditSdk } from '@didit-protocol/sdk-web';

DiditSdk.shared.onComplete = (result) => {
  switch (result.type) {
    case 'completed':
      console.log('Status:', result.session?.status);
      break;
    case 'cancelled':
      console.log('Cancelled');
      break;
    case 'failed':
      console.error('Error:', result.error?.message);
      break;
  }
};

DiditSdk.shared.startVerification({
  url: 'https://verify.didit.me/session/session-token'
});
```

→ [**Documentación completa del SDK de JavaScript**](https://docs.didit.me/integration/web-sdks/javascript-sdk.md) | [**Todos los SDK web**](https://docs.didit.me/es/integration/web-sdks/overview.md)

***

## Cómo elegir una integración

Los SDK nativos son la mejor opción cuando necesitas la lectura NFC de pasaportes electrónicos, la captura de cámara de menor latencia y una experiencia en la app indistinguible del resto de tus pantallas nativas. Usa la **integración con WebView** como alternativa cuando no puedas publicar una actualización con un SDK nativo (por ejemplo, apps heredadas que no puedes recompilar o plataformas sin un SDK nativo de Didit).

| Función | SDK nativos | WebView |
| - | :-: | :-: |
| Experiencia de usuario | Pantallas nativas, compatibilidad total con gestos | Flujo web alojado en un navegador del sistema o WebView |
| Captura de cámara | En el dispositivo, ajustada por el SDK para documentos y selfies | Depende del navegador |
| Lectura NFC de pasaportes electrónicos | ✅ Compatible (iOS 15+, Android con NFC) | ❌ No disponible |
| Rendimiento de la prueba de vida | Pipeline de ML nativo | Pipeline de ML del navegador |
| Temas de marca blanca | ✅ Gestionados desde la consola | ✅ Gestionados desde la consola |
| Impacto en la revisión de App Store / Play Store | Añade el entitlement de NFC y tamaño al binario | Ninguno: solo abre una URL |
| Cuándo usarlo | Apps en producción, flujos con NFC, mejor UX | Integración rápida, stack solo web, alternativa |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.