मुख्य सामग्री पर जाएं
एक क्रॉस-प्लेटफ़ॉर्म React Native SDK जो मूल iOS और Android SDKs को रैप करता है और पहचान सत्यापन के लिए एकीकृत TypeScript API प्रदान करता है।

GitHub रिपॉज़िटरी

GitHub पर सोर्स कोड और उदाहरण देखें

npm पैकेज

@didit-protocol/sdk-react-native

नेटिव SDK: React Native और Expo ऐप्स के लिए यही अनुशंसित तरीका है। यह SDK बेहतर उपयोगकर्ता अनुभव, अनुकूलित कैमरा हैंडलिंग और पूर्ण NFC समर्थन के लिए मूल iOS और Android SDKs को रैप करता है।


आवश्यकताएँ

प्लेटफ़ॉर्म आवश्यकताएँ

बायोमेट्रिक सहमति के लिए नेटिव 4.10.0 या उसके बाद का संस्करण चाहिए। इलिनॉय, टेक्सास या कोलोराडो कानून के दायरे में आने वाले लोगों के लिए, Didit पहली बार चेहरा कैप्चर करने से पहले स्पष्ट बायोमेट्रिक सहमति माँग सकता है। नेटिव iOS और Android 4.10.0 या उसके बाद के संस्करण पिन करने वाला React Native SDK रिलीज़ यह चरण दिखाता है। इससे पुराने संस्करण यह चरण नहीं दिखा सकते: उनके सत्र पहले की तरह चलते हैं, और निर्णय में सहमति एकत्र नहीं की गई होने की रिपोर्ट होती है (biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK")। यदि आप इन राज्यों में लोगों का सत्यापन करते हैं, तो अपग्रेड करें।

इंस्टॉलेशन

Expo (अनुशंसित)

इसके बाद अपनी app.json (या app.config.js) में config plugin जोड़ें। NFC डिफ़ॉल्ट रूप से सक्षम है:
Plugin दोनों प्लेटफ़ॉर्म को अपने आप कॉन्फ़िगर करता है:
  • Android: Gradle में Didit Maven repository जोड़ता है, diditSdkAndroidNfcEnabled Gradle property सेट करता है, और BouncyCastle dependency/packaging नियम लागू करता है
  • iOS: Podfile में DiditSDK podspec जोड़ता है (NFC सक्षम होने पर iOS 15 पर पिन किया जाता है)
Plugin Info.plist में बदलाव नहीं करता। iOS अनुमति कुंजियाँ जोड़ें, और NFC के लिए उसी फ़ाइल में ios.infoPlist के अंतर्गत ISO7816 select identifiers भी जोड़ें। D392F000260100000001 SDK को JPKI के माध्यम से Japan My Number Card पढ़ने देता है:

NFC निर्भरताएँ अक्षम करना

NFC समर्थन के बिना बिल्ड करने के लिए (छोटा बाइनरी, NFC क्षमता की आवश्यकता नहीं), plugin options पास करें:
जब NFC अक्षम हो, तो आपको iOS NFC capability, NFC entitlements, या NFC से संबंधित provisioning सेटअप की आवश्यकता नहीं होती।
यह SDK ऐसे नेटिव मॉड्यूल (कैमरा, NFC) का उपयोग करता है जो Expo Go में उपलब्ध नहीं हैं। आपको डेवलपमेंट बिल्ड का उपयोग करना होगा या native projects बनाने के लिए npx expo prebuild चलाना होगा।

React Native CLI

iOS सेटअप

अपनी Podfile में DiditSDK pod जोड़ें (यह CocoaPods trunk पर उपलब्ध नहीं है)। नीचे दिया गया block DIDIT_SDK_IOS_NFC_ENABLED environment variable का उपयोग करता है, ताकि आप install के समय no-NFC subspec (DiditSDK/Core) को टॉगल कर सकें:
Podspec URL में दिया गया tag इंस्टॉल किए गए package version में diditNativeSdkVersions.ios से मेल खाना चाहिए। React Native 4.13.2 native iOS 4.13.2 और native Android 4.13.2 को पिन करता है। Podspec को main की ओर इंगित न करें: यह package ठीक उसी native iOS version पर निर्भर करता है, इसलिए जैसे ही main आगे बढ़ेगा, CocoaPods DiditSDK के लिए दो असंगत आवश्यकताएँ देखेगा और हर pod install विफल हो जाएगा। Expo config plugin यह URL आपके लिए तैयार करता है; केवल bare React Native CLI के मामले में इसे हाथ से लिखना पड़ता है।
इसके बाद dependencies इंस्टॉल करें:
NFC dependencies के बिना दोबारा बिल्ड करने के लिए, CocoaPods को साफ़ करें और environment variable सेट करके फिर से चलाएँ:

Android सेटअप

अपनी project-level settings.gradle में Didit Maven repository जोड़ें:
अपनी ऐप की android/app/build.gradle में (android { ... } block के भीतर) निम्न जोड़ें, ताकि BouncyCastle duplicate-class conflicts और OSGI MANIFEST.MF duplicate हल हो सकें, जो DiditSDK के transitive dependencies उत्पन्न कर सकती हैं:
Android NFC dependencies के बिना बिल्ड करने के लिए (me.didit:didit-sdk के बजाय me.didit:didit-sdk-core artifact उपयोग करता है), android/gradle.properties में यह जोड़ें:
NFC के साथ पूर्ण Android SDK उपयोग करने के लिए वह property हटाएँ, या उसे true पर सेट करें।

अनुमतियाँ

iOS

अपने ऐप की Info.plist में निम्नलिखित कुंजियाँ जोड़ें। आवश्यक iOS गोपनीयता कुंजियाँ न होने पर, SDK के उस संरक्षित संसाधन तक पहुँचते ही iOS ऐप को बंद कर देगा।

NFC कॉन्फ़िगरेशन

चिप वाले पासपोर्ट और ID कार्ड के लिए NFC रीडिंग सक्षम करने हेतु:
  1. Xcode में NFC Capability जोड़ें:
    • अपना टार्गेट चुनें > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
  2. ISO7816 पहचानकर्ता को Info.plist में जोड़ें:
D392F000260100000001 SDK को JPKI के माध्यम से Japan My Number Card पढ़ने देता है। इसके बिना iOS इस कार्ड की जानकारी SDK को नहीं देता। My Number Card रीडिंग अभी प्रोडक्शन में सक्षम नहीं है, और यह पहचानकर्ता अन्य दस्तावेज़ों पर कोई असर नहीं डालता, इसलिए आप इसे अभी जोड़ सकते हैं।
  1. NFC टैग रीडिंग सक्षम करके एंटाइटलमेंट फ़ाइल जोड़ें:
सुनिश्चित करें कि ऐप की प्रोविज़निंग प्रोफ़ाइल में NFC Tag Reading क्षमता शामिल हो। जब NFC अक्षम हो, तब यह NFC कॉन्फ़िगरेशन आवश्यक नहीं है।

Android

SDK की AndroidManifest.xml में निम्नलिखित अनुमतियाँ घोषित हैं और अपने आप मर्ज हो जाती हैं: कैमरा और NFC हार्डवेयर सुविधाएँ वैकल्पिक (android:required="false") घोषित हैं, ताकि आपका ऐप इन सुविधाओं के बिना उपकरणों पर भी इंस्टॉल हो सके।

त्वरित शुरुआत


इंटीग्रेशन विधियाँ

SDK दो इंटीग्रेशन विधियों का समर्थन करता है:

विधि 1: सत्र टोकन (प्रोडक्शन के लिए अनुशंसित)

Create Verification Session API का उपयोग करके अपने बैकएंड पर सत्र बनाएँ, फिर टोकन SDK को दें:
यह तरीका इन पर आपको पूरा नियंत्रण देता है:
  • सत्र को अपने उपयोगकर्ताओं से जोड़ना (vendor_data)
  • कस्टम मेटाडेटा सेट करना
  • प्रति सत्र कॉलबैक कॉन्फ़िगर करना

विधि 2: वर्कफ़्लो ID (सरल इंटीग्रेशन)

सरल इंटीग्रेशन के लिए, SDK आपके वर्कफ़्लो ID का उपयोग करके सीधे सत्र बना सकता है:

कॉन्फ़िगरेशन

DiditConfig ऑब्जेक्ट पास करके SDK के व्यवहार को अनुकूलित करें:
startVerificationWithWorkflow के लिए, कॉन्फ़िगरेशन को options.config के अंदर पास करें:

कॉन्फ़िगरेशन विकल्प

कैमरा विकल्प

कैमरा विकल्प Web SDK कैमरा विकल्पों से मेल खाते हैं। हर लेंस CameraLens.Front या CameraLens.Back होता है। यदि डिवाइस में अनुरोधित लेंस नहीं है, तो SDK वह पहला कैमरा उपयोग करता है जो उसके पास है। जिन डिवाइसों में केवल एक कैमरा है, वहाँ कैमरा स्विचर भी छिपा रहता है। उपयोगकर्ता को उस चरण के डिफ़ॉल्ट लेंस तक सीमित रखने के लिए किसी स्विचर विकल्प को false पर सेट करें।
थीमिंग और रंग: रंग, पृष्ठभूमि और परिचय स्क्रीन की सेटिंग्स SDK कॉन्फ़िगरेशन में नहीं, बल्कि Didit Console में आपकी व्हाइट लेबल सेटिंग्स के माध्यम से कॉन्फ़िगर की जाती हैं। इससे सभी प्लेटफ़ॉर्म पर एक समान ब्रांडिंग सुनिश्चित होती है।

भाषा समर्थन

SDK 54 भाषाओं का समर्थन करता है। यदि कोई भाषा निर्दिष्ट नहीं है, तो SDK डिवाइस लोकेल का उपयोग करता है और फ़ॉलबैक के रूप में अंग्रेज़ी लेता है।
सभी समर्थित भाषाएँ देखें →

उन्नत विकल्प

ये विकल्प केवल startVerificationWithWorkflow के साथ उपलब्ध हैं, जहाँ SDK आपकी ओर से सत्र बनाता है।

संपर्क विवरण (प्रीफ़िल और सूचनाएँ)

सत्यापन फ़ॉर्म को प्रीफ़िल करने और ईमेल सूचनाएँ सक्षम करने के लिए संपर्क विवरण दें:

अपेक्षित विवरण (क्रॉस-सत्यापन)

दस्तावेज़ से निकाले गए डेटा के साथ स्वचालित क्रॉस-सत्यापन के लिए उपयोगकर्ता के अपेक्षित विवरण दें:
सभी ExpectedDetails फ़ील्ड वैकल्पिक हैं। पूरे प्रकार के लिए src/types.ts देखें।

कस्टम मेटाडेटा

सत्र के साथ कस्टम JSON मेटाडेटा संग्रहीत करें (यह उपयोगकर्ता को नहीं दिखाया जाता):

Gestión de resultados

Tanto startVerification como startVerificationWithWorkflow devuelven un Promise<VerificationResult>. El resultado es una unión discriminada: usa el campo type para determinar el resultado.

Casos de resultado

Propiedades de SessionData

Tipos de error

Conexión perdida

Si el dispositivo pierde la conexión durante la verificación, el SDK muestra una pantalla de “Sin conexión a internet” en lugar de dejar un paso cargando. Sigue comprobando la conexión en segundo plano y cierra la pantalla por sí sola en cuanto Didit vuelve a estar disponible, y el usuario continúa desde el paso en el que estaba. La pantalla ofrece Intentar de nuevo y, cuando showCloseButton es true (el valor predeterminado), Salir de la verificación. Al salir, la verificación termina con un resultado failed cuyo error es networkError, para que tu aplicación sepa que el usuario salió por la conexión.

Ejemplo completo de manejo de resultados


Ejemplo de extremo a extremo (sesión del backend → SDK de React Native → Webhook)

La integración lista para producción: tu backend crea la sesión, tu aplicación de RN recibe el session_token y el SDK ejecuta el flujo. La decisión final se envía a tu backend mediante webhook; nunca confíes solo en el resultado del lado del cliente.

1. Backend: crear la sesión

2. React Native: intercambiar el token e iniciar el SDK

3. Backend: recibir la decisión final mediante webhook

Consulta la guía de Webhooks para más detalles sobre la verificación de la firma HMAC.

Ejemplo completo


अंतिम संशोधन 7 नवंबर 2026