Vai al contenuto principale
Un SDK React Native multipiattaforma che incapsula gli SDK nativi iOS e Android, offrendo un’API TypeScript unificata per la verifica dell’identità.

Repository GitHub

Visualizza il codice sorgente e gli esempi su GitHub

Pacchetto npm

@didit-protocol/sdk-react-native

SDK nativo: questo è l’approccio consigliato per le app React Native ed Expo. L’SDK incapsula gli SDK nativi iOS e Android per la migliore esperienza utente, una gestione della fotocamera ottimizzata e il pieno supporto NFC.


Requisiti

Requisiti di piattaforma

Il consenso biometrico richiede la versione 4.10.0 o successiva degli SDK nativi. Per le persone soggette alle leggi dell’Illinois, del Texas o del Colorado, Didit può chiedere un consenso biometrico esplicito prima della prima acquisizione del volto. Una versione dell’SDK React Native che fissa iOS e Android nativi alla versione 4.10.0 o successiva mostra questo passaggio. Le versioni precedenti non possono mostrarlo: le loro sessioni proseguono come prima, e la decisione riporta il consenso come non raccolto (biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Aggiorna se verifichi persone in questi stati.

Installazione

Expo (consigliato)

Poi aggiungi il plugin di configurazione al tuo app.json (o app.config.js). NFC è attivo per impostazione predefinita:
Il plugin configura automaticamente entrambe le piattaforme:
  • Android: aggiunge il repository Maven di Didit a Gradle, imposta la proprietà Gradle diditSdkAndroidNfcEnabled e applica le regole di dipendenze e packaging per BouncyCastle
  • iOS: aggiunge il podspec di DiditSDK al Podfile (fissato a iOS 15 quando NFC è attivo)
Il plugin non modifica Info.plist. Aggiungi le chiavi di autorizzazione iOS e, per NFC, gli identificatori di selezione ISO7816 in ios.infoPlist nello stesso file. D392F000260100000001 consente all’SDK di leggere la Japan My Number Card tramite JPKI:

Disattivare le dipendenze NFC

Per compilare senza supporto NFC (binario più piccolo, nessuna funzionalità NFC richiesta), passa le opzioni del plugin:
Quando NFC è disattivato, non ti servono la funzionalità NFC di iOS, gli entitlement NFC né la configurazione di provisioning relativa a NFC.
Questo SDK usa moduli nativi (fotocamera, NFC) che non sono disponibili in Expo Go. Devi usare una build di sviluppo oppure eseguire npx expo prebuild per generare i progetti nativi.

React Native CLI

Configurazione iOS

Aggiungi il pod DiditSDK al tuo Podfile (non è su CocoaPods trunk). Il blocco seguente rispetta la variabile d’ambiente DIDIT_SDK_IOS_NFC_ENABLED, così puoi attivare o disattivare la subspec senza NFC (DiditSDK/Core) al momento dell’installazione:
Il tag nell’URL del podspec deve corrispondere a diditNativeSdkVersions.ios nella versione del pacchetto installata. React Native 4.13.2 fissa la versione nativa iOS su 4.13.2 e quella nativa Android su 4.13.2. Non puntare il podspec a main: il pacchetto dipende da quella specifica versione nativa per iOS, quindi appena main avanza CocoaPods vede due requisiti incompatibili per DiditSDK e ogni pod install fallisce. Il plugin di configurazione Expo ricava questo URL per te; solo il percorso React Native CLI puro deve scriverlo a mano.
Poi installa le dipendenze:
Per ricompilare senza dipendenze NFC, pulisci CocoaPods e riesegui con la variabile d’ambiente impostata:

Configurazione Android

Aggiungi il repository Maven di Didit al settings.gradle a livello di progetto:
Aggiungi quanto segue al file android/app/build.gradle (dentro il blocco android { ... }) per risolvere i conflitti di classi duplicate di BouncyCastle e il duplicato di MANIFEST.MF OSGI che le dipendenze transitive di DiditSDK possono causare:
Per compilare senza le dipendenze NFC Android (usa l’artefatto me.didit:didit-sdk-core invece di me.didit:didit-sdk), aggiungi questo a android/gradle.properties:
Rimuovi quella proprietà, oppure impostala su true, per usare l’SDK Android completo con NFC.

Permessi

iOS

Aggiungi le seguenti chiavi al file Info.plist della tua app. Se mancano le chiavi obbligatorie per la privacy di iOS, iOS termina l’app non appena l’SDK accede a quella risorsa protetta.

Configurazione NFC

Per abilitare la lettura NFC di passaporti e carte d’identità con chip:
  1. Aggiungi la capability NFC in Xcode:
    • Seleziona il tuo target > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
  2. Aggiungi gli identificatori ISO7816 a Info.plist:
D392F000260100000001 consente all’SDK di leggere la My Number Card giapponese tramite JPKI: senza di esso, iOS non segnala la carta all’SDK. La lettura della My Number Card non è ancora abilitata in produzione e l’identificatore non cambia nulla per gli altri documenti, quindi puoi aggiungerlo fin da ora.
  1. Aggiungi un file di entitlements con la lettura dei tag NFC abilitata:
Assicurati che il provisioning profile dell’app includa la capability NFC Tag Reading. Questa configurazione NFC non è necessaria quando NFC è disabilitato.

Android

I seguenti permessi sono dichiarati nel file AndroidManifest.xml dell’SDK e vengono uniti automaticamente: Le funzionalità hardware della fotocamera e dell’NFC sono dichiarate come facoltative (android:required="false"), quindi la tua app può essere installata anche su dispositivi privi di queste funzionalità.

Avvio rapido


Metodi di integrazione

L’SDK supporta due metodi di integrazione:

Metodo 1: token di sessione (consigliato per la produzione)

Crea una sessione sul tuo backend usando l’API per la creazione di una sessione di verifica, poi passa il token all’SDK:
Questo approccio ti dà pieno controllo su:
  • Associazione delle sessioni ai tuoi utenti (vendor_data)
  • Impostazione di metadati personalizzati
  • Configurazione dei callback per sessione

Metodo 2: ID del workflow (integrazione più semplice)

Per integrazioni più semplici, l’SDK può creare sessioni direttamente usando il tuo ID del workflow:

Configurazione

Personalizza il comportamento dell’SDK passando un oggetto DiditConfig:
Per startVerificationWithWorkflow, passa la configurazione in options.config:

Opzioni di configurazione

Opzioni della fotocamera

Le opzioni della fotocamera corrispondono alle opzioni della fotocamera dell’SDK Web. Ogni obiettivo è CameraLens.Front o CameraLens.Back. Se il dispositivo non dispone dell’obiettivo richiesto, l’SDK usa la prima fotocamera disponibile. Il selettore di fotocamera è inoltre nascosto sui dispositivi con una sola fotocamera. Imposta un’opzione del selettore su false per bloccare l’utente sull’obiettivo predefinito di quel passaggio.
Tema e colori: colori, sfondi e impostazioni della schermata introduttiva si configurano tramite le tue impostazioni White label nella Didit Console, non nella configurazione dell’SDK. Così il branding resta coerente su tutte le piattaforme.

Supporto linguistico

L’SDK supporta 54 lingue. Se non viene specificata alcuna lingua, l’SDK usa la lingua del dispositivo, con l’inglese come lingua di riserva.
Visualizza tutte le lingue supportate →

Opzioni avanzate

Queste opzioni sono disponibili solo con startVerificationWithWorkflow, quando l’SDK crea la sessione per tuo conto.

Dettagli di contatto (precompilazione e notifiche)

Fornisci i dettagli di contatto per precompilare i moduli di verifica e abilitare le notifiche email:

Dettagli attesi (validazione incrociata)

Fornisci i dati attesi dell’utente per la validazione incrociata automatica con i dati estratti dal documento:
Tutti i campi di ExpectedDetails sono facoltativi. Consulta src/types.ts per il tipo completo.

Metadati personalizzati

Memorizza metadati JSON personalizzati con la sessione (non visualizzati all’utente):

Gestione dei risultati

Sia startVerification sia startVerificationWithWorkflow restituiscono una Promise<VerificationResult>. Il risultato è un’unione discriminata: usa il campo type per determinare l’esito.

Casi di risultato

Proprietà di SessionData

Tipi di errore

Connessione persa

Se il dispositivo perde la connessione durante la verifica, l’SDK sovrappone al flusso una schermata “Nessuna connessione Internet” invece di lasciare un passaggio in caricamento. Continua a controllare in background e chiude la schermata da sola non appena Didit torna raggiungibile, e l’utente prosegue dal passaggio in cui si trovava. La schermata offre Riprova e, quando showCloseButton è true (il valore predefinito), Esci dalla verifica. Uscire termina la verifica con un risultato failed il cui errore è networkError, così la tua app sa che l’utente è uscito a causa della connessione.

Esempio completo di gestione dei risultati


Esempio dall’inizio alla fine (sessione backend → SDK React Native → Webhook)

L’integrazione pronta per la produzione: il tuo backend crea la sessione, la tua app React Native riceve il session_token e l’SDK esegue il flusso. La decisione finale arriva al tuo backend tramite webhook: non fidarti mai del solo risultato lato client.

1. Backend: crea la sessione

2. React Native: scambia il token e avvia l’SDK

3. Backend: ricevi la decisione finale tramite webhook

Consulta la guida ai webhook per i dettagli sulla verifica della firma HMAC.

Esempio completo


Ultima modifica il 7 novembre 2026