GitHub रिपॉज़िटरी
GitHub पर सोर्स कोड, रिलीज़ और पूरा चेंजलॉग देखें
नेटिव SDK: iOS ऐप्स के लिए यही अनुशंसित तरीका है। नेटिव SDK बेहतर उपयोगकर्ता अनुभव, अनुकूलित कैमरा हैंडलिंग और पूर्ण NFC समर्थन प्रदान करते हैं।
आवश्यकताएँ
iOS संस्करण संगतता
बायोमेट्रिक सहमति के लिए नेटिव 4.10.0 या उसके बाद का संस्करण चाहिए। यदि लोग Illinois, Texas या Colorado के कानून के अंतर्गत आते हैं, तो Didit पहले चेहरे के कैप्चर से पहले स्पष्ट बायोमेट्रिक सहमति मांग सकता है। iOS SDK 4.10.0 और बाद के संस्करण यह चरण दिखाते हैं। पुराने संस्करण यह चरण नहीं दिखा सकते: उनके सत्र पहले की तरह चलते हैं, और निर्णय में सहमति को एकत्र नहीं किया गया बताया जाता है (
biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK")। यदि आप उन राज्यों में लोगों की पहचान सत्यापित करते हैं, तो अपडेट करें।इंस्टॉलेशन
4.0.0 से SDK कई इंस्टॉल करने योग्य वेरिएंट में आता है, ताकि आपके ऐप को केवल उन सुविधाओं की बाइनरी लागत चुकानी पड़े जिनका वह उपयोग करता है। ठीक एक वेरिएंट चुनें: एक CocoaPods subspec और एक SwiftPM लाइब्रेरी प्रोडक्ट।
- Core: सबसे छोटा फ़ुटप्रिंट, जिसमें Didit के अपने हल्के डिटेक्टरों पर दस्तावेज़ और सेल्फ़ी का स्वचालित कैप्चर होता है। इसमें कोई
OpenSSL.xcframeworkनहीं होता और कोई CoreNFC रनटाइम नहीं होता - AutoDetection: 4.11.0 से अप्रचलित है और Core के समान है; इसके बजाय Core का उपयोग करें
- NFC: Core के साथ NFC पासपोर्ट/eID चिप रीडिंग
- All: हर सुविधा। जब आप
DiditSDKको subspec या product का नाम दिए बिना इंस्टॉल करते हैं, तो यही डिफ़ॉल्ट होता है
4.9.0 के मुकाबले मापा गया): Core ~11.1 MB, NFC ~11.7 MB के साथ ~4 MB OpenSSL, AutoDetection ~16.0 MB, All ~16.6 MB के साथ OpenSSL।
डिटेक्शन मॉडल स्वयं रनटाइम पर डाउनलोड और कैश होते हैं, इसलिए वे आपके ऐप के डाउनलोड आकार में कभी नहीं गिने जाते।
4.11.0 से हर वेरिएंट में स्वचालित कैप्चर Didit के अपने हल्के डिटेक्टरों पर चलता है। TensorFlow Lite अब SDK का हिस्सा नहीं है, और फ़्रेमवर्क छोटा हो गया है क्योंकि उसके अनुवाद बाइनरी के बाहर से लोड होते हैं।
4.6.0 से शिप किए गए फ़्रेमवर्क में Swift ABI डिस्क्रिप्टर (बिल्ड मेटाडेटा, जिसे Xcode हर ऐप में कॉपी करता है पर कभी पढ़ता नहीं) या वे ट्यूटोरियल वीडियो नहीं होते जिन्हें वह वेरिएंट चला नहीं सकता। 4.5.4 या उससे पहले के संस्करण से अपग्रेड करने पर आपका ऐप केवल इसी से लगभग 7-8 MB छोटा हो जाता है, बिना किसी कोड बदलाव के।
App Store बाइनरी को डिलीवरी के लिए कंप्रेस करता है, इसलिए ओवर-द-एयर लागत कम होती है। प्रति-डिवाइस सटीक अंतर के लिए App Store Connect की ऐप साइज़ रिपोर्ट देखें।
NFC और All वेरिएंट
OpenSSL.xcframework बंडल करते हैं (OpenSSL 3.3.3, जो NFCPassportReader के ज़रिए OpenSSL-Universal 3.3.3001 के रूप में शिप होता है), जो NFC चिप प्रमाणीकरण के लिए ज़रूरी है और iOS 15.0+ माँगता है। 4.0.6 तक के संस्करणों में, उसी सहित, OpenSSL 1.1.1s बंडल था; 4.0.7 और बाद के संस्करणों में OpenSSL 3.3.3 है, जिसका अपना प्राइवेसी मैनिफ़ेस्ट और कोड साइनेचर है। हमेशा 4.0.7 या बाद का संस्करण इंस्टॉल करें। ध्यान दें कि अपग्रेड करने से OpenSSL संस्करण एक हो जाते हैं, पर एम्बेड टकराव दूर नहीं होता: यदि आपके ऐप की किसी और डिपेंडेंसी ने भी OpenSSL.framework एम्बेड किया है (वही फ़ाइल नाम, वही com.github.krzyzanowskim.OpenSSL बंडल ID), तो संस्करण चाहे जो हो, दोनों प्रतियाँ एम्बेड स्टेप पर टकराती हैं। केवल एक प्रति रखें। उदाहरण के लिए, दूसरे पैकेज को SPM identity से ओवरराइड करके Didit द्वारा प्रकाशित OpenSSL.xcframework का उपयोग करें, ताकि बंडल में वही बाइनरी हो जिसके साथ यह SDK बनाया गया था। Core और AutoDetection वेरिएंट कोई OpenSSL लिंक नहीं करते।import DiditSDK आपके ऐप कोड में इंस्टॉल किए गए वेरिएंट से स्वतंत्र एक जैसा रहता है।
Swift Package Manager (अनुशंसित)
Xcode का उपयोग करके प्रोजेक्ट में पैकेज जोड़ें:- File > Add Package Dependencies पर जाएँ
- रिपॉज़िटरी URL दर्ज करें:
- वर्शन चुनें (या
4.13.2से Up to Next Major) और Add Package पर क्लिक करें - जब प्रोडक्ट चुनने को कहा जाए, तो अपने वेरिएंट के लिए ठीक एक लाइब्रेरी प्रोडक्ट चुनें (ऊपर की तालिका देखें)
Package.swift में:
CocoaPods
DiditSDK रिपॉज़िटरी में होस्ट किए गए binary podspec के रूप में वितरित होता है (यह CocoaPods Trunk पर नहीं है), इसलिए आपको podspec URL का संदर्भ देना होगा। ठीक एक subspec चुनें:
Core और AutoDetection iOS 13 तक डिप्लॉय होते हैं; NFC और All को NFCPassportReader के कारण iOS 15 चाहिए।
फिर चलाएँ:
pod install के बाद जनरेट हुई .xcworkspace खोलें (.xcodeproj नहीं)।Xcode 15+ rsync त्रुटियाँ: यदि बिल्ड के दौरान
Operation not permitted rsync त्रुटियाँ दिखें, तो प्रोजेक्ट पर Build Settings → User Script Sandboxing (ENABLE_USER_SCRIPT_SANDBOXING) को Debug और Release दोनों के लिए नहीं पर सेट करें।मैन्युअल (XCFramework)
हर रिलीज़ हर वेरिएंट के लिए एक XCFramework प्रकाशित करती है। अपने वेरिएंट के zip GitHub Releases पेज से डाउनलोड करें, फिर.xcframework फ़ोल्डरों को Xcode में खींचें और Embed & Sign सेट करें।
अनुमतियाँ
SDK को निम्नलिखित अनुमतियों की आवश्यकता होती है। इन्हें अपने ऐप कीInfo.plist में जोड़ें:
उदाहरण Info.plist प्रविष्टियाँ
NFC कॉन्फ़िगरेशन
केवल NFC या All वेरिएंट इंस्टॉल करने पर आवश्यक। यदि आपने Core या AutoDetection वेरिएंट इंस्टॉल किया है, तो यह सेक्शन छोड़ दें। चिप वाले पासपोर्ट और ID कार्ड के लिए NFC रीडिंग सक्षम करने हेतु:-
Xcode में NFC क्षमता जोड़ें:
- अपना टारगेट चुनें → Signing & Capabilities → + Capability → Near Field Communication Tag Reading
-
Info.plistमें ISO7816 पहचानकर्ता जोड़ें:
D392F000260100000001 SDK को JPKI के ज़रिए जापान का My Number Card पढ़ने देता है: इसके बिना iOS कार्ड की जानकारी SDK को नहीं देता। My Number Card पढ़ना अभी प्रोडक्शन में सक्षम नहीं है, और यह पहचानकर्ता अन्य दस्तावेज़ों पर कोई असर नहीं डालता, इसलिए आप इसे अभी जोड़ सकते हैं।
- एंटाइटलमेंट जोड़ें (आपकी
.entitlementsफ़ाइल में):
App Store समीक्षा (NFC और All वेरिएंट): यदि आप NFC या All वेरिएंट इंस्टॉल करते हैं, तो समीक्षा के दौरान Apple डेमो वीडियो माँग सकता है, क्योंकि NFC से संबंधित कोड SDK बाइनरी का हिस्सा है, भले ही आपका वर्कफ़्लो NFC का उपयोग न करे। Apple को सबमिट करने के लिए हमारा NFC डेमो वीडियो support@didit.me से माँगें। यह Core या AutoDetection वेरिएंट पर लागू नहीं होता।
क्विक स्टार्ट
SwiftUI इंटीग्रेशन
UIKit इंटीग्रेशन
इंटीग्रेशन के तरीके
SDK दो इंटीग्रेशन तरीकों का समर्थन करता है:तरीका 1: UniLink (सबसे सरल)
किसी बैकएंड की आवश्यकता नहीं है। SDK Didit Console से आपकी वर्कफ़्लो ID का उपयोग करके सत्र सीधे बनाता है। UniLink तरीका (startVerification(workflowId:)) केवल vendorData का समर्थन करता है; किसी अन्य सत्र पैरामीटर के लिए तरीका 2 का उपयोग करें।
UniLink के ज़रिए सत्र में
vendorData जोड़ने के लिए, Didit Console में विक्रेता डेटा विकल्प सक्षम करें।तरीका 2: बैकएंड सत्र (प्रोडक्शन के लिए अनुशंसित)
आपका बैकएंड Create Verification Session API (POST /v3/session/) के ज़रिए सभी पैरामीटर के समर्थन के साथ सत्र बनाता है (contact_details, expected_details, metadata, callback आदि), और फिर session_token को SDK को पास करता है।
- सत्रों को अपने उपयोगकर्ताओं से जोड़ना (
vendor_data) - क्रॉस-वैलिडेशन के लिए संपर्क विवरण और अपेक्षित विवरण सेट करना
- कस्टम मेटाडेटा सेट करना
- प्रति सत्र कॉलबैक कॉन्फ़िगर करना
कॉन्फ़िगरेशन
DiditSdk.Configuration के साथ SDK के व्यवहार को अनुकूलित करें:
कॉन्फ़िगरेशन विकल्प
कैमरा विकल्प
कैमरा विकल्प Web SDK के कैमरा विकल्पों से मेल खाते हैं। प्रत्येक लेंस.front या .back होता है।
यदि डिवाइस में अनुरोधित लेंस नहीं है, तो SDK उसके पास मौजूद पहला कैमरा उपयोग करता है।
कैमरा स्विचर उन डिवाइसों पर भी छिपा रहता है जिनमें केवल एक कैमरा है।
किसी स्विचर विकल्प को false पर सेट करें ताकि उपयोगकर्ता उस चरण के डिफ़ॉल्ट लेंस तक सीमित रहे।
थीमिंग और रंग: रंग, बैकग्राउंड और इंट्रो स्क्रीन की सेटिंग्स SDK कॉन्फ़िगरेशन में नहीं, बल्कि Didit Console में आपकी व्हाइट लेबल सेटिंग्स के माध्यम से कॉन्फ़िगर की जाती हैं। इससे सभी प्लेटफ़ॉर्म पर एक समान ब्रांडिंग सुनिश्चित होती है।
विकल्प
showLanguageSelector, showCloseButton, showExitConfirmation, और closeOnComplete Web SDK के DiditSdkConfiguration से मेल खाते हैं। मोबाइल-विशिष्ट विकल्प languageLocale और fontFamily इसलिए मौजूद हैं क्योंकि मोबाइल SDK पूरा सत्यापन UI नेटिव रूप से रेंडर करता है (जबकि Web SDK इसे iframe के अंदर होस्टेड फ्रंटएंड को सौंपता है)।भाषा समर्थन
SDK 54 भाषाओं का समर्थन करता है। यदि कोई भाषा निर्दिष्ट नहीं है, तो SDK डिवाइस लोकेल का उपयोग करता है और अंग्रेज़ी को फ़ॉलबैक के रूप में उपयोग करता है।उन्नत सत्र पैरामीटर
उन्नत सत्र पैरामीटर (contact_details, expected_details, metadata, callback) के लिए Backend Session विधि का उपयोग करें। आपका बैकएंड Create Verification Session API को पूर्ण पैरामीटर के साथ कॉल करता है, फिर session_token SDK को पास करता है।
परिणाम संभालना
VerificationResult enum सत्यापन का परिणाम देता है:
परिणाम के केस
SessionData गुण
त्रुटि प्रकार
कनेक्शन खो जाना
यदि सत्यापन के दौरान डिवाइस का कनेक्शन टूट जाता है, तो SDK किसी चरण को लोड होते रहने देने के बजाय उसे “इंटरनेट कनेक्शन नहीं है” स्क्रीन से ढक देता है। यह पृष्ठभूमि में लगातार जाँच करता रहता है और जैसे ही Didit तक पहुँचा जा सके, स्क्रीन अपने आप बंद हो जाती है। उपयोगकर्ता जिस चरण पर था, वहीं से आगे बढ़ता है। स्क्रीन पुनः प्रयास करें और, जबshowCloseButton true हो (डिफ़ॉल्ट), सत्यापन से बाहर निकलें विकल्प देती है।
बाहर निकलने पर सत्यापन .failed(error: .networkError, session:) के साथ समाप्त हो जाता है, ताकि आपका ऐप जान सके कि उपयोगकर्ता कनेक्शन के कारण चला गया।
परिणाम संभालने का पूरा उदाहरण
सत्यापन को प्रोग्रामेटिक रूप से बंद करना
DiditSDK 3.6.0+ में उपलब्ध।
DiditSdk.shared.dismiss() के माध्यम से सक्रिय सत्यापन को प्रोग्रामेटिक रूप से समाप्त कर सकता है। जब होस्ट ऐप को स्क्रीन अपने नियंत्रण में लेनी हो, उदाहरण के लिए जब ऐप बैकग्राउंड में जाए, तब सत्यापन को बंद करने का यह अनुशंसित तरीका है।
dismiss() SDK की सामान्य पूर्णता पाइपलाइन से होकर गुजरता है: यह प्रस्तुत UI को बंद करता है, आंतरिक स्थिति को रीसेट करता है, और यदि सत्र बनाया गया था तो वर्तमान sessionId के साथ .diditVerification हैंडलर को .cancelled(session:) के साथ कॉल करता है। जब कोई सत्यापन सक्रिय न हो, तब यह कोई प्रभाव नहीं डालता (no-op)।
उदाहरण: ऐप बैकग्राउंड में जाने पर बंद करना
SDK स्थिति देखना
आप कस्टम लोडिंग UI के लिए SDK की स्थिति देख सकते हैं:एंड-टू-एंड उदाहरण (बैकएंड सत्र → iOS SDK → परिणाम)
यह पैटर्न प्रोडक्शन-रेडी इंटीग्रेशन है। आपका बैकएंड सत्र बनाता है, आपका iOS ऐपsession_token प्राप्त करता है, और SDK फ़्लो चलाता है।