> ## 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 nativi: iOS, Android, React Native, Flutter

> SDK KYC nativi di Didit per iOS, Android, React Native e Flutter con verifica NFC. Da $0.33 per verifica KYC completa, $10 gratis al mese.

> [!NOTE]
>
> Queste versioni si riferiscono agli SDK di verifica dell'identità. I moduli e i wrapper di autenticazione nativa hanno un rilascio separato: vedi le [guide rapide all'autenticazione](https://docs.didit.me/it/authentication/overview.md).

Integra la verifica Didit nativamente nelle tue applicazioni mobili con i nostri SDK ufficiali. Gli SDK nativi offrono un'**esperienza utente fluida**, **prestazioni migliori** e **pieno accesso alle funzionalità del dispositivo** rispetto alle integrazioni basate su WebView.

> [!NOTE]
>
> ### **Approccio consigliato**: per la migliore esperienza utente, usa i nostri SDK nativi invece dell'integrazione WebView. Gli SDK nativi gestiscono automaticamente tutta la complessità dei permessi della fotocamera, della lettura NFC e del rilevamento della vitalità.

***

## Disponibilità degli SDK

| Piattaforma | Distribuzione | Ultima versione | NFC | Versione minima | Documentazione |
| - | - | - | :-: | - | - |
| iOS | Swift Package Manager, CocoaPods | 4.13.2 | ✅ (iOS 15+) | iOS 13.0+ (core), iOS 15.0+ (NFC) | [Guida all'SDK iOS](https://docs.didit.me/it/integration/native-sdks/ios-sdk.md) |
| Android | Maven (repository personalizzato, `me.didit:didit-sdk`) | 4.13.2 | ✅ | API 23+ (Android 6.0) | [Guida all'SDK Android](https://docs.didit.me/it/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+ | [Guida all'SDK React Native](https://docs.didit.me/it/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+ | [Guida all'SDK Flutter](https://docs.didit.me/it/integration/native-sdks/flutter-sdk.md) |
| Web (JS) | npm (`@didit-protocol/sdk-web`) | 0.4.0 | — | Qualsiasi browser moderno | [Guida all'SDK Web](https://docs.didit.me/it/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **Il consenso biometrico richiede la versione nativa 4.10.0 o successiva.** Per le persone soggette alla normativa dell'Illinois, del Texas o del Colorado, Didit può richiedere un [consenso biometrico](https://docs.didit.me/it/getting-started/biometric-consent.md) esplicito prima della prima acquisizione del volto. Il flusso ospitato (SDK Web, WebView, browser) e gli SDK nativi iOS e Android 4.10.0 o successivi mostrano questo passaggio; React Native e Flutter lo mostrano in una release che fissa la versione nativa 4.10.0 o successiva. Un SDK nativo precedente alla 4.10.0, oppure uno che non riporta la propria versione, non può mostrarlo: le sue sessioni procedono come prima, e la decisione riporta `biometric_consent.status: "pending"` con `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Aggiorna se verifichi persone in questi stati.

### Novità nella 4.13.2

Su iOS, una foto richiesta a una fotocamera che si apre ma non fornisce fotogrammi non fa più andare in crash la tua app: ogni richiesta di foto verifica prima che sia in esecuzione una sessione della fotocamera con una connessione video attiva, e la schermata mostra invece l'errore della fotocamera o l'opzione per saltare il passaggio.
Su Android, nel selfie della ricerca ID, una richiesta di foto da una fotocamera che non fornisce fotogrammi termina con l'errore della fotocamera nella schermata dopo 5 secondi, invece di attendere all'infinito.
Nella schermata di benvenuto, mentre l'elenco dei passaggi continua sotto la dissolvenza inferiore, un pulsante rotondo Scorri verso il basso è posizionato orizzontalmente al centro dell'elenco (anche nelle lingue da destra a sinistra), come nel flusso web; un tocco scorre l'elenco verso il basso, e il pulsante si nasconde alla fine dell'elenco e mentre un pannello è aperto.
La 4.13.1 per Android era una release intermedia con solo il pulsante Scorri verso il basso; la 4.13.2 lo porta su iOS, React Native e Flutter.
L'SDK React Native 4.13.2 corregge anche un crash all'avvio nelle build di release Android minificate con R8 e `proguard-android-optimize.txt`: il pacchetto ora include le proprie regole R8.
L'SDK Flutter 4.13.2 si compila anche con Android Gradle Plugin 9 e il Kotlin integrato.

### Novità nella 4.13.0

Nel passaggio del telefono, ogni numero +1 (Stati Uniti e Canada) mostra una breve informativa sulle tariffe dell'operatore sotto Invia codice ("Potrebbero applicarsi tariffe standard per messaggi e dati"), con link ai Termini SMS e all'Informativa sulla privacy, nella lingua della persona.
L'ovale del selfie ora si adatta sopra i propri controlli sugli schermi di altezza ridotta, e sono stati rimossi la pillola verde Fine, il pulsante Ho capito dopo la foto di un documento e la schermata Selfie scattato: una foto acquisita passa direttamente a Elaborazione.
Quando l'acquisizione del documento è solo l'alternativa e un wallet di identità digitale è in primo piano, la schermata di avvio del wallet offre solo il wallet, e un nuovo tentativo con il wallet mantiene la verifica aperta senza un link al documento.
Viene disegnata una bandiera per ogni prefisso internazionale che Didit può inviare, e mai quella sbagliata.
Uno scenario sandbox attivato su una sessione già avviata ora mostra il motivo invece di un errore generico.
Su Android, il wallet Credential Manager riporta "Verifica con identità digitale", perché Google Wallet o qualsiasi altro wallet Android che contenga un documento d'identità compatibile può rispondere. iOS non offre questo metodo.

### Novità nella 4.12.2

La schermata di benvenuto centra il logo sopra il titolo allineato a sinistra, e iOS mostra il logo del cliente alto 72 pt, come fanno Android e il web.
Nel passaggio delle persone chiave KYB, Aggiungi rappresentante si apre con un ruolo di rappresentante selezionato e salva la persona tra i rappresentanti anche quando il workflow disattiva alcuni ruoli.
Nei questionari, "Protetto da" resta fissato sotto il pulsante sugli schermi di altezza ridotta e con testo grande, il selettore del paese di una domanda sull'indirizzo ha un titolo riferito all'indirizzo, e un menu a tendina aperto adotta gli angoli dei campi.

### Novità nella 4.12.1

Su un iPhone con lo spazio di archiviazione esaurito, le acquisizioni del documento e del selfie ora conservano il video: l'SDK iOS le registra in memoria e non carica mai una registrazione senza fotogrammi video.
Una risposta del server in ritardo rispetto a una risposta anticipata non riapre più il passaggio appena completato (il passaggio NFC, selfie o documento), su iOS e Android.

### Novità nella 4.12.0

Loghi dei wallet di identità digitale mostrati dal flusso web (Mobile-ID, ConnectID, Finnish Trust Network, OneID, Bank iD, MojeID, FranceConnect, Auðkenni, la carta d'identità estone e GOV.UK Wallet), sulla stessa targhetta bianca o nera del web.
I suggerimenti di acquisizione spiegano cosa fare quando l'acquisizione automatica non è attiva, la schermata di benvenuto mantiene fissa la frase legale con testo di grandi dimensioni, e un avvio della sessione rifiutato non offre più un nuovo tentativo che non può funzionare.
Le fotocamere per documento e selfie hanno un pulsante Cambia fotocamera accanto allo scatto, con Carica spostato in Suggerimenti, e nulla viene acquisito automaticamente mentre un pannello è aperto sopra la fotocamera.
Su Android, il pannello Seleziona fotocamera denomina le fotocamere "Fotocamera anteriore" e "Fotocamera posteriore" in ogni lingua.

### Novità nella 4.11.0

La versione 4.11.0 include anche tutto ciò che era previsto per la 4.10.0, che non è mai stata pubblicata: quindi passa direttamente dalla 4.9.1.
Il flusso ha una struttura rinnovata, con una nuova barra superiore, l'avanzamento espresso in parole e una schermata di benvenuto ricostruita.
L'acquisizione automatica di documento e selfie è ora presente in tutte le varianti, grazie ai rilevatori leggeri di Didit, quindi le varianti `Core` e `AutoDetection` acquisiscono allo stesso modo.
La variante `AutoDetection` e l'artefatto Android `didit-sdk-autodetection` sono deprecati e identici a `Core`, e l'artefatto Android `didit-sdk-autodetection-play` non è più pubblicato.
Nuovi passaggi: Verifica bancaria, Posizione (attivabile tramite le varianti iOS `Core-Location`, `NFC-Location` e `All-Location`), firma elettronica e consenso biometrico.

### Novità nella 4.9.1

I selettori del paese per il documento e la prova di residenza ora si aprono sul paese rilevato dall'indirizzo IP dell'utente su iOS e Android, anche quando la ricerca termina dopo la comparsa della schermata.
Un paese impostato nella sessione o scelto dall'utente non viene mai sovrascritto.
Su Android, l'intestazione della sezione e i campi di un questionario vengono mostrati nella lingua dell'SDK, e la scansione del passaporto NFC non va più in crash nella variante completa.
I testi di verifica in russo e kirghiso sono stati migliorati su entrambe le piattaforme.

### Novità nella 4.9.0

Tutti gli SDK mobili nativi e cross-platform offrono ora un selettore della lingua facoltativo nella schermata di benvenuto della verifica.
Imposta `showLanguageSelector` su `true` per mostrare lo stesso selettore compatto e con ricerca usato nel flusso di verifica web.
Il selettore è nascosto per impostazione predefinita, quindi le integrazioni esistenti mantengono il loro comportamento attuale finché non lo abilitano.

> [!NOTE]
>
> ### **Alternativa**: se un SDK nativo non è ancora disponibile per la tua piattaforma, puoi usare [Integrazione WebView](https://docs.didit.me/it/integration/web-sdks/webview-in-ios-android.md) come soluzione di ripiego.

***

## Come funziona una sessione di verifica

Ogni SDK nativo utilizza la stessa sessione di verifica Didit. Il flusso è il seguente:

1. **Il tuo backend** chiama [`POST /v3/session/`](https://docs.didit.me/it/sessions-api/create-session) con `workflow_id` più eventuali dati di contesto opzionali (`vendor_data`, `contact_details`, `expected_details`, `metadata`, `callback`).
2. Didit restituisce un `session_id`, un `session_token` a breve durata e un `url` della pagina ospitata.
3. **La tua app mobile** riceve il `session_token` dal tuo backend e lo passa all'SDK (`startVerification(token: …)`).
4. L'SDK nativo apre l'interfaccia di verifica, l'utente completa i passaggi e l'SDK restituisce un risultato con lo `status` finale della sessione (`Approved`, `Declined`, `In Review`, ecc.).
5. **Il tuo backend** riceve la decisione completa tramite un [webhook](https://docs.didit.me/it/integration/webhooks.md) (`webhook_type: "status.updated"`) e la salva.

> [!NOTE]
>
> Il risultato dell'SDK indica l'esito del workflow (status). La decisione completa (campi del documento, punteggi di confronto facciale, riscontri AML, dati NFC, avvisi) viene consegnata al tuo server tramite webhook e può anche essere recuperata dall'endpoint [Retrieve Session Decision](https://docs.didit.me/it/sessions-api/retrieve-session.md). Non fare mai affidamento solo sul risultato lato client per decisioni di autorizzazione.

Tutti gli SDK nativi supportano anche la modalità **UniLink** (solo workflow ID, senza backend). Usa UniLink per prototipi rapidi e il metodo con token di sessione per la produzione.

***

## SDK per iOS

**Quando usarlo**: app native Swift / SwiftUI / UIKit destinate a iOS 13+.

Un SDK iOS leggero e guidato dal server per la verifica dell'identità, con una configurazione minima.

> [card] [Repository GitHub](https://github.com/didit-protocol/sdk-ios)
>
> Consulta il codice sorgente e gli esempi su GitHub

**Funzionalità principali:**

* Supporto per SwiftUI e UIKit
* Lettura di passaporti e documenti d'identità con NFC (iOS 15+; le varianti senza NFC `Core` e `AutoDetection` rimuovono NFC e OpenSSL e si distribuiscono su iOS 13+)
* 54 lingue supportate
* Tema dell'interfaccia personalizzabile
* Integrazione con token di sessione o workflow ID

**Avvio rapido:**

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

→ [**Documentazione completa dell'SDK iOS**](https://docs.didit.me/it/integration/native-sdks/ios-sdk.md)

***

## SDK per Android

**Quando usarlo**: app native Kotlin / Jetpack Compose / Java destinate ad Android 6.0 (API 23) o superiore.

Un SDK Android leggero e guidato dal server per la verifica dell'identità, con una configurazione minima.

> [card] [Repository GitHub](https://github.com/didit-protocol/sdk-android)
>
> Consulta il codice sorgente e gli esempi su GitHub

**Funzionalità principali:**

* Supporto per Kotlin e Jetpack Compose
* Lettura di passaporti e documenti d'identità con NFC (l'artefatto `me.didit:didit-sdk-core`, attivabile esplicitamente, rimuove le dipendenze NFC)
* Rilevamento automatico di documento e volto basato su ML su API 24+ (con ripiego sull'acquisizione manuale su API 23)
* 54 lingue supportate
* Tema dell'interfaccia personalizzabile
* Integrazione con token di sessione o workflow ID

**Avvio rapido:**

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

→ [**Documentazione completa dell'SDK Android**](https://docs.didit.me/it/integration/native-sdks/android-sdk.md)

***

## SDK React Native

**Quando usarlo**: app React Native o Expo multipiattaforma che richiedono un'unica API TypeScript per iOS e Android (RN 0.76+, Nuova architettura).

Un SDK React Native multipiattaforma che incapsula gli SDK nativi iOS e Android con un'unica API TypeScript.

> [card] [Repository GitHub](https://github.com/didit-protocol/sdk-react-native)
>
> Consulta il codice sorgente e gli esempi su GitHub

**Funzionalità principali:**

* Un'unica API TypeScript per iOS e Android
* Supporto Expo con plugin di configurazione a configurazione zero (richiede una build di sviluppo, non Expo Go)
* Supporto per React Native CLI
* Lettura di passaporti e documenti d'identità con NFC (disattivabile con `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 54 lingue supportate (ereditate dagli SDK nativi)
* Integrazione con token di sessione o workflow ID

**Avvio rapido:**

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

→ [**Documentazione completa dell'SDK React Native**](https://docs.didit.me/it/integration/native-sdks/react-native-sdk.md)

***

## SDK Flutter

**Quando usarlo**: app Flutter multipiattaforma che richiedono un'unica API Dart per iOS e Android (Flutter 3.3+, Dart 3.11+).

Un SDK Flutter multipiattaforma che incapsula gli SDK nativi iOS e Android con un'unica API Dart.

> [card] [Pacchetto pub.dev](https://pub.dev/packages/didit_sdk)
>
> Consulta il pacchetto su pub.dev

**Funzionalità principali:**

* Un'unica API Dart per iOS e Android
* Integrazione con gli SDK nativi tramite canale della piattaforma
* Lettura di passaporti e documenti d'identità con NFC (disattivabile con `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 54 lingue supportate (ereditate dagli SDK nativi)
* Integrazione con token di sessione o workflow ID

**Avvio rapido:**

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

→ [**Documentazione completa dell'SDK Flutter**](https://docs.didit.me/it/integration/native-sdks/flutter-sdk.md)

***

## SDK Web (JavaScript)

**Quando usarlo**: applicazioni basate su browser e framework web (React, Vue, Angular, Next.js, Nuxt, Svelte, JavaScript puro). L'SDK Web apre il flusso di verifica sulla pagina ospitata in una modale o in un iframe inline; per le app mobili, preferisci gli SDK nativi sopra descritti.

Un SDK JavaScript per applicazioni web con supporto per React, Vue, Angular, Next.js, Nuxt, Svelte e JavaScript puro.

> [card] [Pacchetto NPM](https://www.npmjs.com/package/@didit-protocol/sdk-web)
>
> Consulta il pacchetto su npm

**Funzionalità principali:**

* Gestione programmatica delle sessioni e callback di evento
* Supporto per React, Vue, Angular, Next.js, Nuxt, Svelte e JavaScript puro
* Supporto completo per TypeScript
* Modalità modale e inline (incorporata)
* Gestione dello stato per interfacce personalizzate

**Avvio rapido:**

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

→ [**Documentazione completa dell'SDK JavaScript**](https://docs.didit.me/it/integration/web-sdks/javascript-sdk.md) | [**Tutti gli SDK Web**](https://docs.didit.me/it/integration/web-sdks/overview.md)

***

## Come scegliere un'integrazione

Gli SDK nativi sono la scelta migliore quando ti servono la lettura dei passaporti elettronici tramite NFC, l'acquisizione dalla fotocamera con la latenza più bassa e un'esperienza in-app indistinguibile dalle altre schermate native. Usa **Integrazione WebView** come soluzione di ripiego quando non puoi distribuire un aggiornamento dell'SDK nativo (ad esempio app brownfield che non puoi ricompilare, o piattaforme senza un SDK nativo di Didit).

| Funzionalità | SDK nativi | WebView |
| - | :-: | :-: |
| Esperienza utente | Schermate native, supporto completo dei gesti | Flusso web ospitato in un browser di sistema o WebView |
| Acquisizione dalla fotocamera | Sul dispositivo, ottimizzata dall'SDK per documento e selfie | Dipende dal browser |
| Lettura del passaporto elettronico NFC | ✅ Supportata (iOS 15+, Android con NFC) | ❌ Non disponibile |
| Prestazioni del rilevamento della vitalità | Pipeline ML nativa | Pipeline ML del browser |
| Personalizzazione White label | ✅ Gestita dalla console | ✅ Gestita dalla console |
| Impatto sulla revisione di App Store / Play Store | Aggiunge il diritto NFC (entitlement) e aumenta la dimensione del binario | Nessuno: apre solo un URL |
| Quando usarla | App di produzione, flussi NFC, migliore UX | Integrazione rapida, stack solo web, ripiego |


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