> ## 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 mobiles natifs : iOS, Android, RN, Flutter

> SDK KYC mobiles natifs Didit (iOS, Android, RN, Flutter) : passeport NFC et vivant. Dès $0.33 par KYC complet, $10 gratuits/mois.

> [!NOTE]
>
> Ces versions concernent les SDK de vérification d'identité. Les modules et wrappers d'authentification natifs ont une version distincte : voir les [guides de démarrage rapide sur l'authentification](https://docs.didit.me/fr/authentication/overview.md).

Intégrez la vérification Didit nativement dans vos applications mobiles grâce à nos SDK officiels. Les SDK natifs offrent une **expérience utilisateur fluide**, de **meilleures performances** et un **accès complet aux fonctionnalités de l'appareil**, par rapport aux intégrations basées sur WebView.

> [!NOTE]
>
> ### **Approche recommandée** : pour une expérience utilisateur optimale, utilisez nos SDK natifs plutôt qu'une intégration WebView. Les SDK natifs gèrent d'emblée toute la complexité des autorisations de la caméra, de la lecture NFC et de la détection du vivant.

***

## Disponibilité des SDK

| Plateforme | Distribution | Dernière version | NFC | Version minimale | Documentation |
| - | - | - | :-: | - | - |
| iOS | Swift Package Manager, CocoaPods | 4.13.2 | ✅ (iOS 15+) | iOS 13.0+ (cœur), iOS 15.0+ (NFC) | [Guide du SDK iOS](https://docs.didit.me/fr/integration/native-sdks/ios-sdk.md) |
| Android | Maven (dépôt personnalisé, `me.didit:didit-sdk`) | 4.13.2 | ✅ | API 23+ (Android 6.0) | [Guide du SDK Android](https://docs.didit.me/fr/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+ | [Guide du SDK React Native](https://docs.didit.me/fr/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+ | [Guide du SDK Flutter](https://docs.didit.me/fr/integration/native-sdks/flutter-sdk.md) |
| Web (JS) | npm (`@didit-protocol/sdk-web`) | 0.4.0 | — | Tout navigateur moderne | [Guide du SDK Web](https://docs.didit.me/fr/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **Le consentement biométrique nécessite le SDK natif 4.10.0 ou une version ultérieure.** Pour les personnes concernées par la loi de l'Illinois, du Texas ou du Colorado, Didit peut demander un [consentement biométrique](https://docs.didit.me/fr/getting-started/biometric-consent.md) explicite avant la première capture du visage. Le parcours hébergé (SDK Web, WebView, navigateur) ainsi que les SDK natifs iOS et Android 4.10.0 ou une version ultérieure affichent cette étape ; React Native et Flutter l'affichent dans une version qui épingle le SDK natif 4.10.0 ou une version ultérieure. Un SDK natif inférieur à 4.10.0, ou qui ne signale pas sa version, ne peut pas l'afficher : ses sessions se déroulent comme auparavant, et la décision renvoie `biometric_consent.status: "pending"` avec `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Mettez à niveau si vous vérifiez des personnes dans ces États.

### Nouveautés de la version 4.13.2

Sur iOS, une photo demandée à partir d'une caméra qui s'ouvre sans délivrer d'images ne fait plus planter votre application : chaque demande de photo vérifie d'abord qu'une session caméra est en cours avec une connexion vidéo active, et l'écran affiche à la place son erreur de caméra ou propose d'ignorer la demande de photo.
Sur Android, à l'étape du selfie de recherche d'identité, une demande de photo à partir d'une caméra qui ne délivre aucune image aboutit à l'erreur de caméra de l'écran au bout de 5 secondes, au lieu d'attendre indéfiniment.
Sur l'écran d'accueil, lorsque la liste des étapes se poursuit sous son fondu inférieur, un bouton rond « Défiler vers le bas » est centré horizontalement sur la liste (y compris dans les langues écrites de droite à gauche), comme dans le parcours web ; un appui fait défiler la liste vers le bas, et le bouton disparaît en fin de liste ainsi que lorsqu'une feuille est ouverte.
La version 4.13.1 pour Android était une version intermédiaire ne contenant que le bouton « Défiler vers le bas » ; la version 4.13.2 l'apporte à iOS, React Native et Flutter.
React Native 4.13.2 corrige aussi un plantage au lancement dans les versions Android de production réduites avec R8 et `proguard-android-optimize.txt` : le package embarque désormais ses propres règles R8.
Flutter 4.13.2 se compile aussi avec Android Gradle Plugin 9 et son Kotlin intégré.

### Nouveautés de la version 4.13.0

À l'étape du téléphone, chaque numéro +1 (États-Unis et Canada) affiche une courte mention de l'opérateur sous Envoyer le code (« Des frais de messagerie et de données standard peuvent s'appliquer ») avec des liens vers les conditions d'utilisation des SMS et la politique de confidentialité, dans la langue de la personne.
Le cadre de selfie s'adapte désormais au-dessus de ses commandes sur les écrans de faible hauteur, et la pastille verte Terminé, le bouton Compris après une photo de document ainsi que l'écran Selfie pris ont disparu : une photo capturée passe directement à Traitement en cours.
Lorsque la capture de document n'est qu'une solution de secours et qu'un portefeuille d'identité numérique est proposé en premier, l'écran de lancement du portefeuille n'affiche que ce portefeuille ; une nouvelle tentative avec le portefeuille maintient la vérification ouverte sans lien vers un document.
Un drapeau est affiché pour chaque indicatif pays que Didit peut envoyer, et jamais le mauvais.
Un scénario de sandbox armé sur une session déjà démarrée affiche désormais la raison, au lieu d'une erreur générique.
Sur Android, le portefeuille Credential Manager affiche « Vérifier avec une identité numérique », car Google Wallet ou tout autre portefeuille Android détenant une identité compatible peut y répondre. iOS ne propose pas cette méthode.

### Nouveautés de la version 4.12.2

L'écran d'accueil centre le logo au-dessus du titre aligné à gauche, et iOS affiche le logo du client d'une hauteur de 72 pt, comme Android et le web.
Dans l'étape des personnes clés KYB, Ajouter un représentant s'ouvre avec un rôle de représentant sélectionné et enregistre la personne parmi les représentants, même lorsque le workflow désactive certains rôles.
Dans les questionnaires, « Sécurisé par » reste fixé sous le bouton sur les écrans de faible hauteur et avec les grandes tailles de texte, le sélecteur de pays d'une question d'adresse porte un titre adapté à l'adresse, et une liste déroulante ouverte reprend les coins arrondis des champs.

### Nouveautés de la version 4.12.1

Sur un iPhone dont le stockage est plein, les captures de document et de selfie conservent désormais leur vidéo : le SDK iOS les enregistre en mémoire et n'envoie jamais un enregistrement sans images vidéo.
Une réponse du serveur arrivée après une première réponse ne rouvre plus l'étape qui vient d'être validée (l'étape NFC, selfie ou document), sur iOS et Android.

### Nouveautés de la version 4.12.0

Logos des portefeuilles d'identité numérique proposés par le parcours web (Mobile-ID, ConnectID, Finnish Trust Network, OneID, Bank iD, MojeID, FranceConnect, Auðkenni, la carte d'identité estonienne et GOV.UK Wallet), sur le même fond blanc ou noir que sur le web.
Les conseils de capture indiquent quoi faire lorsque la capture automatique ne fonctionne pas, l'écran d'accueil conserve sa phrase juridique épinglée pour les grandes tailles de texte, et un démarrage de session refusé ne propose plus de nouvelle tentative qui ne pourrait pas aboutir.
Les caméras de document et de selfie disposent d'un bouton Changer de caméra à côté du déclencheur, Importer ayant été déplacé dans Conseils, et rien n'est capturé automatiquement lorsqu'une feuille est ouverte par-dessus la caméra.
Sur Android, la feuille Sélectionner la caméra désigne les caméras « Caméra avant » et « Caméra arrière » dans toutes les langues.

### Nouveautés de la version 4.11.0

La version 4.11.0 reprend aussi tout ce qui était prévu pour la 4.10.0, qui n'a jamais été publiée ; passez donc directement de la 4.9.1 à la 4.11.0.
Le parcours bénéficie d'une structure redessinée, avec une nouvelle barre supérieure, une progression exprimée en mots et un écran d'accueil reconstruit.
La capture automatique du document et du selfie est désormais disponible dans toutes les variantes, grâce aux détecteurs légers de Didit ; les variantes `Core` et `AutoDetection` capturent donc de la même manière.
La variante `AutoDetection` et l'artefact Android `didit-sdk-autodetection` sont dépréciés et identiques à `Core`, et l'artefact Android `didit-sdk-autodetection-play` n'est plus publié.
Nouvelles étapes : Vérification bancaire, Localisation (activée sur demande via les variantes iOS `Core-Location`, `NFC-Location` et `All-Location`), signature électronique et consentement biométrique.

### Nouveautés de la version 4.9.1

Les sélecteurs de pays des justificatifs de domicile et des documents s'ouvrent désormais sur le pays détecté à partir de l'adresse IP de l'utilisateur sur iOS et Android, même lorsque cette détection se termine après l'affichage de l'écran.
Un pays défini dans la session ou choisi par l'utilisateur n'est jamais remplacé.
Sur Android, l'en-tête de section et les champs d'un questionnaire s'affichent dans la langue du SDK, et la numérisation du passeport NFC ne plante plus dans la variante complète.
Les textes de vérification en russe et en kirghize sont améliorés sur les deux plateformes.

### Nouveautés de la version 4.9.0

Tous les SDK mobiles natifs et multiplateformes proposent désormais un sélecteur de langue activable sur l'écran d'accueil de la vérification.
Définissez `showLanguageSelector` sur `true` pour afficher le même sélecteur compact avec recherche que celui utilisé dans le parcours de vérification web.
Le sélecteur est masqué par défaut, de sorte que les intégrations existantes conservent leur comportement actuel tant que vous ne l'activez pas.

> [!NOTE]
>
> ### **Alternative** : si un SDK natif n'est pas encore disponible pour votre plateforme, vous pouvez utiliser [l'intégration WebView](https://docs.didit.me/fr/integration/web-sdks/webview-in-ios-android.md) comme solution de repli.

***

## Fonctionnement d'une session de vérification

Chaque SDK natif utilise la même session de vérification Didit. Le déroulement est le suivant :

1. **Votre backend** appelle [`POST /v3/session/`](https://docs.didit.me/fr/sessions-api/create-session) avec `workflow_id` ainsi que les éléments de contexte facultatifs (`vendor_data`, `contact_details`, `expected_details`, `metadata`, `callback`).
2. Didit renvoie un `session_id`, un `session_token` de courte durée et une `url` hébergée.
3. **Votre application mobile** reçoit le `session_token` de votre backend et le transmet au SDK (`startVerification(token: …)`).
4. Le SDK natif ouvre l'interface de vérification, l'utilisateur effectue les étapes, puis le SDK renvoie un résultat accompagné du `status` final de la session (`Approved`, `Declined`, `In Review`, etc.).
5. **Votre backend** reçoit la décision complète via un [webhook](https://docs.didit.me/fr/integration/webhooks.md) (`webhook_type: "status.updated"`) et l'enregistre.

> [!NOTE]
>
> Le résultat du SDK indique l'issue du workflow (statut). La décision complète (champs du document, scores de correspondance faciale, correspondances AML, données NFC, avertissements) est transmise à votre serveur via webhook et peut aussi être récupérée à l'aide de l'endpoint [Retrieve Session Decision](https://docs.didit.me/fr/sessions-api/retrieve-session.md). Ne vous fiez jamais uniquement au résultat côté client pour prendre des décisions d'autorisation.

Tous les SDK natifs prennent aussi en charge un mode **UniLink** (ID de workflow uniquement, sans backend requis). Utilisez UniLink pour des prototypes rapides et la méthode par token de session en production.

***

## SDK iOS

**Quand l'utiliser** : applications natives Swift / SwiftUI / UIKit ciblant iOS 13+.

Un SDK iOS léger, piloté par le serveur, pour la vérification d'identité avec une configuration minimale.

> [card] [Dépôt GitHub](https://github.com/didit-protocol/sdk-ios)
>
> Consultez le code source et les exemples sur GitHub

**Principales fonctionnalités :**

* Prise en charge de SwiftUI et UIKit
* Lecture NFC du passeport et de la pièce d'identité (iOS 15+ ; les variantes sans NFC `Core` et `AutoDetection` retirent NFC et OpenSSL, et se déploient sur iOS 13+)
* 54 langues prises en charge
* Thème d'interface personnalisable
* Intégration par token de session ou par ID de workflow

**Démarrage rapide :**

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

→ [**Documentation complète du SDK iOS**](https://docs.didit.me/fr/integration/native-sdks/ios-sdk.md)

***

## SDK Android

**Quand l'utiliser** : applications natives Kotlin / Jetpack Compose / Java ciblant Android 6.0 (API 23) ou version ultérieure.

Un SDK Android léger, piloté par le serveur, pour la vérification d'identité avec une configuration minimale.

> [card] [Dépôt GitHub](https://github.com/didit-protocol/sdk-android)
>
> Consultez le code source et les exemples sur GitHub

**Principales fonctionnalités :**

* Prise en charge de Kotlin et Jetpack Compose
* Lecture NFC du passeport et de la pièce d'identité (l'artefact `me.didit:didit-sdk-core` à activer explicitement retire les dépendances NFC)
* Détection automatique du document et du visage par ML sur API 24+ (capture manuelle de secours sur API 23)
* 54 langues prises en charge
* Thème d'interface personnalisable
* Intégration par token de session ou par ID de workflow

**Démarrage rapide :**

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

→ [**Documentation complète du SDK Android**](https://docs.didit.me/fr/integration/native-sdks/android-sdk.md)

***

## SDK React Native

**Quand l'utiliser** : applications multiplateformes React Native ou Expo qui ont besoin d'une API TypeScript unique pour iOS et Android (RN 0.76+, New Architecture).

Un SDK React Native multiplateforme qui encapsule les SDK natifs iOS et Android derrière une API TypeScript unifiée.

> [card] [Dépôt GitHub](https://github.com/didit-protocol/sdk-react-native)
>
> Consultez le code source et les exemples sur GitHub

**Principales fonctionnalités :**

* API TypeScript unique pour iOS et Android
* Prise en charge d'Expo avec plugin de configuration sans configuration manuelle (build de développement requis, Expo Go non pris en charge)
* Prise en charge de la CLI React Native
* Lecture NFC du passeport et de la pièce d'identité (désactivable avec `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 54 langues prises en charge (héritées des SDK natifs)
* Intégration par token de session ou par ID de workflow

**Démarrage rapide :**

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

→ [**Documentation complète du SDK React Native**](https://docs.didit.me/fr/integration/native-sdks/react-native-sdk.md)

***

## SDK Flutter

**Quand l'utiliser** : applications multiplateformes Flutter qui ont besoin d'une API Dart unique pour iOS et Android (Flutter 3.3+, Dart 3.11+).

Un SDK Flutter multiplateforme qui encapsule les SDK natifs iOS et Android derrière une API Dart unifiée.

> [card] [Paquet pub.dev](https://pub.dev/packages/didit_sdk)
>
> Consultez le paquet sur pub.dev

**Principales fonctionnalités :**

* API Dart unique pour iOS et Android
* Intégration aux SDK natifs via des canaux de plateforme
* Lecture NFC du passeport et de la pièce d'identité (désactivable avec `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 54 langues prises en charge (héritées des SDK natifs)
* Intégration par token de session ou par ID de workflow

**Démarrage rapide :**

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

→ [**Documentation complète du SDK Flutter**](https://docs.didit.me/fr/integration/native-sdks/flutter-sdk.md)

***

## SDK Web (JavaScript)

**Quand l'utiliser** : applications web et frameworks web (React, Vue, Angular, Next.js, Nuxt, Svelte, JavaScript natif). Le SDK Web ouvre le parcours de vérification hébergé dans une fenêtre modale ou dans un iframe intégré. Pour les applications mobiles, privilégiez les SDK natifs ci-dessus.

Un SDK JavaScript pour applications web, compatible avec React, Vue, Angular, Next.js, Nuxt, Svelte et JavaScript natif.

> [card] [Paquet NPM](https://www.npmjs.com/package/@didit-protocol/sdk-web)
>
> Consultez le paquet sur npm

**Principales fonctionnalités :**

* Gestion programmatique des sessions et callbacks d'événements
* Prise en charge de React, Vue, Angular, Next.js, Nuxt, Svelte et JavaScript natif
* Prise en charge complète de TypeScript
* Modes modal et intégré (inline)
* Gestion d'état pour les interfaces personnalisées

**Démarrage rapide :**

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

→ [**Documentation complète du SDK JavaScript**](https://docs.didit.me/fr/integration/web-sdks/javascript-sdk.md) | [**Tous les SDK Web**](https://docs.didit.me/fr/integration/web-sdks/overview.md)

***

## Choisir une intégration

Les SDK natifs sont la meilleure option lorsque vous avez besoin de la lecture NFC des passeports électroniques, de la capture par caméra avec la latence la plus faible et d'une expérience dans l'application indiscernable de vos autres écrans natifs. Utilisez **WebView Integration** comme solution de repli lorsque vous ne pouvez pas publier une mise à jour du SDK natif (par exemple, pour des applications existantes que vous ne pouvez pas reconstruire, ou des plateformes sans SDK natif Didit).

| Fonctionnalité | SDK natifs | WebView |
| - | :-: | :-: |
| Expérience utilisateur | Écrans natifs, prise en charge complète des gestes | Parcours web hébergé dans le navigateur système ou une WebView |
| Capture caméra | Sur l'appareil, optimisée par le SDK pour la pièce d'identité et le selfie | Dépend du navigateur |
| Lecture NFC des passeports électroniques | ✅ Prise en charge (iOS 15+, Android compatible NFC) | ❌ Non disponible |
| Performance de la détection du vivant | Pipeline ML natif | Pipeline ML du navigateur |
| Personnalisation en marque blanche | ✅ Pilotée depuis la console | ✅ Pilotée depuis la console |
| Impact sur la validation par l'App Store / le Play Store | Ajoute l'autorisation NFC et augmente la taille du binaire | Aucun, il suffit d'ouvrir une URL |
| Quand l'utiliser | Applications en production, workflows NFC, meilleure UX | Intégration rapide, stack exclusivement web, solution de repli |


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