> ## 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.

# Mobile KYC-SDKs: iOS, Android, React Native & Flutter

> Didits native KYC-SDKs für iOS, Android, React Native & Flutter: NFC & Liveness-Erkennung. Ab $0.33 pro KYC-Check, $10/Monat kostenlos.

> [!NOTE]
>
> Diese Versionen beziehen sich auf SDKs zur Ausweisverifizierung. Native Authentifizierungsmodule und Wrapper haben ein separates Release: siehe die [Authentifizierungs-Schnellstarts](https://docs.didit.me/de/authentication/overview.md).

Integrieren Sie die Didit-Verifizierung mit unseren offiziellen SDKs nativ in Ihre mobilen Anwendungen. Native SDKs bieten im Vergleich zu WebView-basierten Integrationen eine **nahtlose Benutzererfahrung**, **bessere Leistung** und **vollen Zugriff auf Gerätefunktionen**.

> [!NOTE]
>
> ### **Empfohlener Ansatz**: Nutzen Sie für die beste Benutzererfahrung unsere nativen SDKs anstelle einer WebView-Integration. Native SDKs übernehmen die gesamte Komplexität von Kameraberechtigungen, NFC-Lesen und Liveness-Erkennung standardmäßig.

***

## SDK-Verfügbarkeit

| Plattform | Bereitstellung | Neueste Version | NFC | Mindestversion | Dokumentation |
| - | - | - | :-: | - | - |
| iOS | Swift Package Manager, CocoaPods | 4.13.2 | ✅ (iOS 15+) | iOS 13.0+ (Kern), iOS 15.0+ (NFC) | [iOS-SDK-Leitfaden](https://docs.didit.me/de/integration/native-sdks/ios-sdk.md) |
| Android | Maven (eigenes Repository, `me.didit:didit-sdk`) | 4.13.2 | ✅ | API 23+ (Android 6.0) | [Android-SDK-Leitfaden](https://docs.didit.me/de/integration/native-sdks/android-sdk.md) |
| React Native | npm / yarn (`@didit-protocol/sdk-react-native`) | 4.13.2 | ✅ | RN 0.76+ (New Architecture), iOS 13.0+ / Android API 24+ | [React-Native-SDK-Leitfaden](https://docs.didit.me/de/integration/native-sdks/react-native-sdk.md) |
| Flutter | pub.dev (`didit_sdk`) | 4.13.2 | ✅ | Flutter 3.3+, Dart 3.11+, iOS 13.0+ / Android API 23+ | [Flutter-SDK-Leitfaden](https://docs.didit.me/de/integration/native-sdks/flutter-sdk.md) |
| Web (JS) | npm (`@didit-protocol/sdk-web`) | 0.4.0 | — | Jeder moderne Browser | [Web-SDK-Leitfaden](https://docs.didit.me/de/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **Die biometrische Einwilligung erfordert das native SDK in Version 4.10.0 oder neuer.** Bei Personen, die unter das Recht von Illinois, Texas oder Colorado fallen, kann Didit vor der ersten Gesichtsaufnahme eine ausdrückliche [biometrische Einwilligung](https://docs.didit.me/de/getting-started/biometric-consent.md) anfordern. Den gehosteten Ablauf (Web-SDK, WebView, Browser) sowie die nativen iOS- und Android-SDKs ab Version 4.10.0 zeigen diesen Schritt; React Native und Flutter zeigen ihn in einer Version, die auf ein natives SDK der Version 4.10.0 oder neuer festgelegt ist. Ein natives SDK unter 4.10.0 oder ein SDK, das seine Version nicht meldet, kann diesen Schritt nicht anzeigen: Seine Sitzungen laufen wie bisher, und die Entscheidung meldet `biometric_consent.status: "pending"` mit `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Aktualisieren Sie, wenn Sie Personen in diesen Staaten verifizieren.

### Neuerungen in 4.13.2

Unter iOS stürzt Ihre App nicht mehr ab, wenn ein Foto von einer Kamera angefordert wird, die sich öffnet, aber keine Videoframes liefert: Jede Fotoanfrage prüft zuerst, ob eine laufende Kamerasitzung mit aktiver Videoverbindung besteht, und der Bildschirm zeigt stattdessen seinen Kamerafehler oder die Option zum Überspringen an.
Unter Android endet bei dem Selfie für die Ausweissuche eine Fotoanfrage von einer Kamera, die keine Videoframes liefert, nach 5 Sekunden mit dem Kamerafehler des Bildschirms, statt unbegrenzt zu warten.
Auf dem Willkommensbildschirm erscheint, während die Schrittliste unterhalb des unteren Verlaufs weitergeht, eine runde Schaltfläche „Nach unten scrollen“, horizontal mittig auf der Liste (auch in Sprachen mit Rechts-nach-links-Schrift), wie im Web-Ablauf. Ein Tippen scrollt die Liste nach unten, und die Schaltfläche wird am Ende der Liste sowie während ein Sheet geöffnet ist ausgeblendet.
Android 4.13.1 war eine Zwischenversion mit nur der Schaltfläche „Nach unten scrollen“; 4.13.2 bringt sie zu iOS, React Native und Flutter.
React Native 4.13.2 behebt außerdem einen Absturz beim Start in Android-Release-Builds, die mit R8 und `proguard-android-optimize.txt` minifiziert werden: Das Paket enthält jetzt seine eigenen R8-Regeln.
Flutter 4.13.2 lässt sich außerdem mit dem Android Gradle Plugin 9 und dem integrierten Kotlin bauen.

### Neuerungen in 4.13.0

Im Schritt zur Telefonnummer zeigt jede Nummer mit +1 (USA und Kanada) unter „Code senden“ einen kurzen Hinweis des Mobilfunkanbieters („Es können Standard-Nachrichten- und Datentarife anfallen“) mit Links zu den SMS-Bedingungen und zur Datenschutzerklärung, in der Sprache der Person.
Das Selfie-Oval passt auf kurzen Bildschirmen jetzt oberhalb seiner Bedienelemente. Die grüne Schaltfläche „Fertig“, der Hinweis „Verstanden“ nach einem Dokumentfoto und der Bildschirm „Selfie aufgenommen“ entfallen: Ein aufgenommenes Foto geht direkt zu „In Verarbeitung“.
Wenn die Dokumentaufnahme nur als Ausweichlösung dient und eine digitale ID-Wallet vorne steht, bietet der Startbildschirm der Wallet nur die Wallet an, und ein erneuter Wallet-Versuch hält die Verifizierung ohne Dokumentlink offen.
Für jede Ländervorwahl, die Didit senden kann, wird eine Flagge angezeigt, und niemals die falsche.
Ein Sandbox-Szenario, das für eine bereits gestartete Sitzung aktiviert wurde, zeigt jetzt den Grund statt eines allgemeinen Fehlers.
Unter Android lautet die Wallet des Credential Managers „Mit digitaler ID verifizieren“, weil Google Wallet oder jede andere Android-Wallet, die einen kompatiblen Ausweis enthält, darauf antworten kann. iOS bietet diese Methode nicht an.

### Neuerungen in 4.12.2

Der Willkommensbildschirm zentriert das Logo über dem linksbündigen Titel, und iOS zeichnet das Logo des Kunden 72 pt hoch, wie Android und das Web es tun.
Im Schritt „Schlüsselpersonen“ bei KYB öffnet „Vertreter hinzufügen“ mit ausgewählter Vertreterrolle und speichert die Person unter den Vertretern, auch wenn der Workflow einige Rollen deaktiviert.
In Fragebögen bleibt „Gesichert durch“ auf kurzen Bildschirmen und bei großer Schrift unter der Schaltfläche fixiert, die Länderauswahl einer Adressfrage trägt eine adressbezogene Überschrift, und ein geöffnetes Dropdown übernimmt die Ecken der Felder.

### Neuerungen in 4.12.1

Auf einem iPhone mit vollem Speicher behalten die Dokument- und Selfie-Aufnahmen jetzt ihr Video: Das iOS-SDK zeichnet sie im Arbeitsspeicher auf und lädt niemals eine Aufnahme ohne Videobilder hoch.
Eine Serverantwort, die einer früheren Antwort hinterherhinkt, öffnet den gerade beantworteten Schritt (den NFC-, Selfie- oder Dokumentschritt) nicht mehr erneut, unter iOS und Android.

### Neuerungen in 4.12.0

Wallet-Logos für jede digitale ID-Wallet, die der Web-Ablauf anzeigt (Mobile-ID, ConnectID, Finnish Trust Network, OneID, Bank iD, MojeID, FranceConnect, Auðkenni, die estnische ID-Karte und GOV.UK Wallet), auf derselben weißen oder schwarzen Fläche wie im Web.
Aufnahmehinweise sagen, was zu tun ist, wenn die automatische Aufnahme nicht läuft. Der Willkommensbildschirm behält seinen rechtlichen Satz bei großen Schriftgrößen an dieser Stelle fixiert, und ein abgelehnter Sitzungsstart bietet keinen Wiederholungsversuch mehr an, der nicht funktionieren kann.
Die Dokument- und Selfie-Kameras haben neben dem Auslöser eine Schaltfläche „Kamera wechseln“, „Hochladen“ wurde in die Tipps verschoben, und solange ein Sheet über der Kamera geöffnet ist, wird nichts automatisch aufgenommen.
Unter Android nennt das Sheet „Kamera auswählen“ die Kameras in allen Sprachen „Frontkamera“ und „Rückkamera“.

### Neuerungen in 4.11.0

Version 4.11.0 enthält außerdem alles, was für 4.10.0 geplant war; 4.10.0 wurde jedoch nie veröffentlicht. Aktualisieren Sie daher direkt von 4.9.1.
Der Ablauf hat eine überarbeitete Oberfläche mit einer neuen oberen Leiste, Fortschrittsangaben in Worten und einem neu aufgebauten Willkommensbildschirm.
Die automatische Dokument- und Selfie-Aufnahme ist jetzt in jeder Variante enthalten und nutzt die eigenen schlanken Detektoren von Didit, sodass die Varianten `Core` und `AutoDetection` gleich aufnehmen.
Die Variante `AutoDetection` und das Android-Artefakt `didit-sdk-autodetection` sind veraltet und identisch mit `Core`. Das Android-Artefakt `didit-sdk-autodetection-play` wird nicht mehr veröffentlicht.
Neue Schritte: Bankverifizierung, Standort (Opt-in über die iOS-Varianten `Core-Location`, `NFC-Location` und `All-Location`), E-Signatur und biometrische Einwilligung.

### Neuigkeiten in 4.9.1

Die Länderauswahl für Dokumente und Adressnachweise öffnet sich auf iOS und Android jetzt mit dem Land, das anhand der IP-Adresse des Benutzers erkannt wurde, auch wenn diese Abfrage erst nach dem Erscheinen des Bildschirms abgeschlossen ist.
Ein in der Sitzung festgelegtes Land oder ein vom Benutzer gewähltes Land wird niemals überschrieben.
Unter Android werden die Abschnittsüberschrift und die Felder eines Fragebogens in der SDK-Sprache angezeigt, und der NFC-Scan von Reisepässen stürzt in der Vollversion nicht mehr ab.
Die russischen und kirgisischen Texte der Verifizierung wurden auf beiden Plattformen verbessert.

### Neuigkeiten in 4.9.0

Alle nativen und plattformübergreifenden mobilen SDKs bieten jetzt auf dem Begrüßungsbildschirm der Verifizierung eine optional aktivierbare Sprachauswahl.
Setzen Sie `showLanguageSelector` auf `true`, um dieselbe kompakte, durchsuchbare Auswahl anzuzeigen, die im Web-Verifizierungsablauf verwendet wird.
Die Sprachauswahl ist standardmäßig ausgeblendet, sodass bestehende Integrationen ihr bisheriges Verhalten beibehalten, bis Sie sie aktivieren.

> [!NOTE]
>
> ### **Alternative**: Wenn für Ihre Plattform noch kein natives SDK verfügbar ist, können Sie die [WebView-Integration](https://docs.didit.me/de/integration/web-sdks/webview-in-ios-android.md) als Ausweichlösung verwenden.

***

## Ablauf einer Verifizierungssitzung

Jedes native SDK nutzt dieselbe Didit-Verifizierungssitzung. Der Ablauf ist:

1. **Ihr Backend** ruft [`POST /v3/session/`](https://docs.didit.me/de/sessions-api/create-session) mit `workflow_id` sowie optionalem Kontext (`vendor_data`, `contact_details`, `expected_details`, `metadata`, `callback`) auf.
2. Didit gibt eine `session_id`, ein kurzlebiges `session_token` und eine gehostete `url` zurück.
3. **Ihre mobile App** erhält das `session_token` von Ihrem Backend und übergibt es an das SDK (`startVerification(token: …)`).
4. Das native SDK öffnet die Verifizierungs-Benutzeroberfläche, der Benutzer schließt die Schritte ab und das SDK gibt ein Ergebnis mit dem finalen `status` der Sitzung zurück (`Approved`, `Declined`, `In Review` usw.).
5. **Ihr Backend** empfängt die vollständige Entscheidung über einen [Webhook](https://docs.didit.me/de/integration/webhooks.md) (`webhook_type: "status.updated"`) und speichert sie dauerhaft.

> [!NOTE]
>
> Das SDK-Ergebnis teilt Ihnen das Ergebnis des Workflows (Status) mit. Die vollständige Entscheidung – Dokumentenfelder, Übereinstimmungswerte für den Gesichtsabgleich, AML-Treffer, NFC-Daten, Warnungen – wird per Webhook an Ihren Server übermittelt und kann auch über den Endpoint [Retrieve Session Decision](https://docs.didit.me/de/sessions-api/retrieve-session.md) abgerufen werden. Verlassen Sie sich bei Autorisierungsentscheidungen niemals allein auf das clientseitige Ergebnis.

Alle nativen SDKs unterstützen zudem einen **UniLink**-Modus (nur Workflow-ID, kein Backend erforderlich). Verwenden Sie UniLink für schnelle Prototypen und die Session-Token-Methode für die Produktion.

***

## iOS-SDK

**Einsatzbereich**: native Apps mit Swift / SwiftUI / UIKit für iOS 13+.

Ein schlankes, servergesteuertes iOS-SDK für die Identitätsverifizierung mit minimalem Konfigurationsaufwand.

> [card] [GitHub-Repository](https://github.com/didit-protocol/sdk-ios)
>
> Quellcode und Beispiele auf GitHub ansehen

**Hauptfunktionen:**

* Unterstützung für SwiftUI und UIKit
* Auslesen von Reisepässen/Ausweisen per NFC (iOS 15+; die Varianten `Core` und `AutoDetection` ohne NFC entfernen NFC und OpenSSL und lassen sich ab iOS 13+ einsetzen)
* Unterstützung für 54 Sprachen
* Anpassbares UI-Theming
* Integration über Session-Token oder Workflow-ID

**Schnellstart:**

```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)")
    }
}
```

→ [**Vollständige iOS-SDK-Dokumentation**](https://docs.didit.me/de/integration/native-sdks/ios-sdk.md)

***

## Android-SDK

**Einsatzbereich**: native Apps mit Kotlin / Jetpack Compose / Java für Android 6.0 (API 23) oder höher.

Ein schlankes, servergesteuertes Android-SDK für die Identitätsverifizierung mit minimalem Konfigurationsaufwand.

> [card] [GitHub-Repository](https://github.com/didit-protocol/sdk-android)
>
> Quellcode und Beispiele auf GitHub ansehen

**Hauptfunktionen:**

* Unterstützung für Kotlin und Jetpack Compose
* Auslesen von Reisepässen/Ausweisen per NFC (optionales Artefakt `me.didit:didit-sdk-core` entfernt NFC-Abhängigkeiten)
* ML-basierte automatische Dokumenten- und Gesichtserkennung ab API 24+ (reibungsloser Fallback auf manuelle Erfassung bei API 23)
* Unterstützung für 54 Sprachen
* Anpassbares UI-Theming
* Integration über Session-Token oder Workflow-ID

**Schnellstart:**

```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}")
    }
}
```

→ [**Vollständige Android-SDK-Dokumentation**](https://docs.didit.me/de/integration/native-sdks/android-sdk.md)

***

## React-Native-SDK

**Einsatzbereich**: Plattformübergreifende React-Native- oder Expo-Apps, die eine einheitliche TypeScript-API für iOS und Android benötigen (RN 0.76+, New Architecture).

Ein plattformübergreifendes React-Native-SDK, das die nativen iOS- und Android-SDKs mit einer einheitlichen TypeScript-API kapselt.

> [card] [GitHub-Repository](https://github.com/didit-protocol/sdk-react-native)
>
> Quellcode und Beispiele auf GitHub ansehen

**Hauptfunktionen:**

* Einheitliche TypeScript-API für iOS und Android
* Expo-Unterstützung mit einem konfigurationsfreien Plugin (Entwicklungs-Build erforderlich – kein Expo Go)
* Unterstützung für React Native CLI
* Auslesen von Reisepässen/Ausweisen per NFC (deaktivierbar über `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* Unterstützung für 54 Sprachen (übernommen von den nativen SDKs)
* Integration über Session-Token oder Workflow-ID

**Schnellstart:**

```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;
}
```

→ [**Vollständige React-Native-SDK-Dokumentation**](https://docs.didit.me/de/integration/native-sdks/react-native-sdk.md)

***

## Flutter-SDK

**Einsatzbereich**: Plattformübergreifende Flutter-Apps, die eine einheitliche Dart-API für iOS und Android benötigen (Flutter 3.3+, Dart 3.11+).

Ein plattformübergreifendes Flutter-SDK, das die nativen iOS- und Android-SDKs mit einer einheitlichen Dart-API kapselt.

> [card] [pub.dev-Paket](https://pub.dev/packages/didit_sdk)
>
> Paket auf pub.dev ansehen

**Hauptfunktionen:**

* Einheitliche Dart-API für iOS und Android
* Platform-Channel-Integration mit den nativen SDKs
* Auslesen von Reisepässen/Ausweisen per NFC (deaktivierbar über `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* Unterstützung für 54 Sprachen (übernommen von den nativen SDKs)
* Integration über Session-Token oder Workflow-ID

**Schnellstart:**

```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}');
}
```

→ [**Vollständige Flutter-SDK-Dokumentation**](https://docs.didit.me/de/integration/native-sdks/flutter-sdk.md)

***

## Web-SDK (JavaScript)

**Einsatzbereich**: Browserbasierte Apps und Web-Frameworks (React, Vue, Angular, Next.js, Nuxt, Svelte, Vanilla JS). Das Web-SDK öffnet den gehosteten Verifizierungsablauf in einem Modal oder einem Inline-iframe – für mobile Apps sollten Sie die oben aufgeführten nativen SDKs bevorzugen.

Ein JavaScript-SDK für Webanwendungen mit Unterstützung für React, Vue, Angular, Next.js, Nuxt, Svelte und Vanilla JS.

> [card] [NPM-Paket](https://www.npmjs.com/package/@didit-protocol/sdk-web)
>
> Paket auf npm ansehen

**Hauptfunktionen:**

* Programmatische Sitzungsverwaltung und Event-Callbacks
* Unterstützung für React, Vue, Angular, Next.js, Nuxt, Svelte und Vanilla JS
* Vollständige TypeScript-Unterstützung
* Modal- und Inline-Modus (eingebettet)
* Zustandsverwaltung für individuelle Benutzeroberflächen

**Schnellstart:**

```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'
});
```

→ [**Vollständige JavaScript-SDK-Dokumentation**](https://docs.didit.me/de/integration/web-sdks/javascript-sdk.md) | [**Alle Web-SDKs**](https://docs.didit.me/de/integration/web-sdks/overview.md)

***

## Wahl einer Integration

Native SDKs sind die beste Wahl, wenn Sie das Auslesen von NFC-ePässen, Kameraerfassung mit minimaler Latenz und ein In-App-Erlebnis benötigen, das von Ihren übrigen nativen Bildschirmen nicht zu unterscheiden ist. Nutzen Sie die **WebView-Integration** als Fallback, wenn Sie kein natives SDK-Update ausrollen können (beispielsweise bei Brownfield-Apps, die Sie nicht neu kompilieren können, oder auf Plattformen ohne ein natives SDK von Didit).

| Funktion | Native SDKs | WebView |
| - | :-: | :-: |
| Benutzererlebnis | Native Bildschirme, vollständige Gestenunterstützung | Gehosteter Web-Ablauf in einem Systembrowser/WebView |
| Kameraerfassung | Direkt auf dem Gerät, SDK-optimiert für Ausweise und Selfies | Vom Browser abhängig |
| NFC-ePass-Auslesen | ✅ Unterstützt (iOS 15+, NFC-fähiges Android) | ❌ Nicht verfügbar |
| Liveness-Performance | Native ML-Pipeline | Browser-ML-Pipeline |
| White-Label-Design | ✅ Über die Konsole gesteuert | ✅ Über die Konsole gesteuert |
| Auswirkungen auf die Prüfung im App Store / Play Store | Erfordert NFC-Berechtigung und erhöht die Binärgröße | Keine – öffnet lediglich eine URL |
| Wann zu verwenden | Produktions-Apps, NFC-Workflows, beste UX | Schnelle Integration, reiner Web-Stack, Fallback |


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