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 डिफ़ॉल्ट रूप से सक्षम है:
- Android: Gradle में Didit Maven repository जोड़ता है,
diditSdkAndroidNfcEnabledGradle property सेट करता है, और BouncyCastle dependency/packaging नियम लागू करता है - iOS: Podfile में DiditSDK podspec जोड़ता है (NFC सक्षम होने पर iOS 15 पर पिन किया जाता है)
Info.plist में बदलाव नहीं करता। iOS अनुमति कुंजियाँ जोड़ें, और NFC के लिए उसी फ़ाइल में ios.infoPlist के अंतर्गत ISO7816 select identifiers भी जोड़ें। D392F000260100000001 SDK को JPKI के माध्यम से Japan My Number Card पढ़ने देता है:
NFC निर्भरताएँ अक्षम करना
NFC समर्थन के बिना बिल्ड करने के लिए (छोटा बाइनरी, NFC क्षमता की आवश्यकता नहीं), plugin options पास करें:React Native CLI
iOS सेटअप
अपनीPodfile में DiditSDK pod जोड़ें (यह CocoaPods trunk पर उपलब्ध नहीं है)। नीचे दिया गया block DIDIT_SDK_IOS_NFC_ENABLED environment variable का उपयोग करता है, ताकि आप install के समय no-NFC subspec (DiditSDK/Core) को टॉगल कर सकें:
Android सेटअप
अपनी project-levelsettings.gradle में Didit Maven repository जोड़ें:
android/app/build.gradle में (android { ... } block के भीतर) निम्न जोड़ें, ताकि BouncyCastle duplicate-class conflicts और OSGI MANIFEST.MF duplicate हल हो सकें, जो DiditSDK के transitive dependencies उत्पन्न कर सकती हैं:
me.didit:didit-sdk के बजाय me.didit:didit-sdk-core artifact उपयोग करता है), android/gradle.properties में यह जोड़ें:
true पर सेट करें।
अनुमतियाँ
iOS
अपने ऐप कीInfo.plist में निम्नलिखित कुंजियाँ जोड़ें। आवश्यक iOS गोपनीयता कुंजियाँ न होने पर, SDK के उस संरक्षित संसाधन तक पहुँचते ही iOS ऐप को बंद कर देगा।
NFC कॉन्फ़िगरेशन
चिप वाले पासपोर्ट और ID कार्ड के लिए NFC रीडिंग सक्षम करने हेतु:-
Xcode में NFC Capability जोड़ें:
- अपना टार्गेट चुनें > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
-
ISO7816 पहचानकर्ता को
Info.plistमें जोड़ें:
D392F000260100000001 SDK को JPKI के माध्यम से Japan My Number Card पढ़ने देता है। इसके बिना iOS इस कार्ड की जानकारी SDK को नहीं देता। My Number Card रीडिंग अभी प्रोडक्शन में सक्षम नहीं है, और यह पहचानकर्ता अन्य दस्तावेज़ों पर कोई असर नहीं डालता, इसलिए आप इसे अभी जोड़ सकते हैं।
- 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
TantostartVerification 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, cuandoshowCloseButton 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 elsession_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.