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)
app.json (o app.config.js). NFC è attivo per impostazione predefinita:
- Android: aggiunge il repository Maven di Didit a Gradle, imposta la proprietà Gradle
diditSdkAndroidNfcEnablede applica le regole di dipendenze e packaging per BouncyCastle - iOS: aggiunge il podspec di DiditSDK al Podfile (fissato a iOS 15 quando NFC è attivo)
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:React Native CLI
Configurazione iOS
Aggiungi il pod DiditSDK al tuoPodfile (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:
Configurazione Android
Aggiungi il repository Maven di Didit alsettings.gradle a livello di progetto:
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:
me.didit:didit-sdk-core invece di me.didit:didit-sdk), aggiungi questo a android/gradle.properties:
true, per usare l’SDK Android completo con NFC.
Permessi
iOS
Aggiungi le seguenti chiavi al fileInfo.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:-
Aggiungi la capability NFC in Xcode:
- Seleziona il tuo target > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
-
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.
- Aggiungi un file di entitlements con la lettura dei tag NFC abilitata:
Android
I seguenti permessi sono dichiarati nel fileAndroidManifest.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:- 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 oggettoDiditConfig:
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.Opzioni avanzate
Queste opzioni sono disponibili solo constartVerificationWithWorkflow, 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: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
SiastartVerification 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, quandoshowCloseButton è 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 ilsession_token e l’SDK esegue il flusso. La decisione finale arriva al tuo backend tramite webhook: non fidarti mai del solo risultato lato client.