KeychainAccess Swift: पूरी गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

KeychainAccess क्या है और इसकी आवश्यकता क्यों है?

KeychainAccess Swift के लिए एक हल्की लेकिन शक्तिशाली लाइब्रेरी है, जो Apple की Keychain Services के साथ काम करने के लिए एक सुविधाजनक और टाइप-सेफ इंटरफ़ेस प्रदान करती है। Keychain एक सुरक्षित स्टोरेज है जो iOS, macOS, watchOS और tvOS में बिल्ट-इन होता है, और इसका उपयोग संवेदनशील डेटा जैसे पासवर्ड, एन्क्रिप्शन कीज़, ऑथेंटिकेशन टोकन, क्रेडिट कार्ड नंबर और किसी भी अन्य गुप्त जानकारी को स्टोर करने के लिए किया जाता है।

लाइब्रेरी के बिना, नेटिव C इंटरफ़ेस (SecItemAdd, SecItemCopyMatching, SecItemUpdate, SecItemDelete फंक्शन) के माध्यम से Keychain के साथ काम करना बहुत जटिल है, इसमें बहुत सारा बॉयलरप्लेट कोड लिखना पड़ता है और इसमें गलतियाँ होने की संभावना रहती है। KeychainAccess इस समस्या को हल करता है और निम्नलिखित सुविधाएँ प्रदान करता है:

  • सरल Swift सिंटैक्स: प्रॉपर्टी (get/set) और स्पष्ट नामों वाले मेथड के माध्यम से काम करें।
  • टाइप-सेफ्टी: डेटा स्वचालित रूप से String, Data या Codable को लागू करने वाले कस्टम टाइप में बदल जाता है।
  • लचीलापन: विभिन्न एक्सेस लेवल (ऐप उपलब्धता, डिवाइस अनलॉक होने के बाद, बायोमेट्री के साथ), Keychain ग्रुप और iCloud सिंक्रोनाइज़ेशन के लिए सपोर्ट।
  • डिफ़ॉल्ट रूप से सुरक्षित: लाइब्रेरी Apple द्वारा निर्धारित सर्वोत्तम सुरक्षा प्रथाओं का उपयोग करती है।

यह लाइब्रेरी OAuth टोकन, उपयोगकर्ता पासवर्ड, API कीज़, क्रिप्टो वॉलेट सीड फ्रेज़ और किसी भी अन्य डेटा को स्टोर करने के लिए आदर्श है जिसे UserDefaults या फ़ाइल सिस्टम में खुले रूप में स्टोर नहीं किया जा सकता।

KeychainAccess की स्थापना (Installation)

KeychainAccess pip (Python) या npm (JavaScript) के माध्यम से इंस्टॉल नहीं होती है। यह Apple इकोसिस्टम के लिए एक नेटिव लाइब्रेरी है। स्थापना के मुख्य तरीके:

1. Swift Package Manager (SPM) — अनुशंसित तरीका

Xcode में: File → Add Packages... → रिपॉजिटरी URL डालें:

https://github.com/kishikawakatsumi/KeychainAccess.git

वर्जन चुनें (आमतौर पर "Up to Next Major" नवीनतम स्थिर वर्जन के साथ) और अपने टार्गेट में पैकेज जोड़ें।

या अपने पैकेज के Package.swift में डिपेंडेंसी जोड़ें:

// swift-tools-version:5.7
import PackageDescription

let package = Package(
    name: "MyPackage",
    dependencies: [
        .package(url: "https://github.com/kishikawakatsumi/KeychainAccess.git", from: "4.2.2")
    ],
    targets: [
        .target(
            name: "MyPackage",
            dependencies: ["KeychainAccess"]),
    ]
)

2. CocoaPods

अपने Podfile में लाइन जोड़ें:

pod 'KeychainAccess'

फिर pod install चलाएँ।

3. Carthage

Cartfile में जोड़ें:

github "kishikawakatsumi/KeychainAccess"

फिर carthage update चलाएँ और फ्रेमवर्क को अपने प्रोजेक्ट में जोड़ें।

KeychainAccess के साथ त्वरित शुरुआत

स्थापना के बाद, लाइब्रेरी को इम्पोर्ट करें: import KeychainAccess

सबसे सरल उदाहरण — एक स्ट्रिंग को सेव और रीड करना:

import KeychainAccess

// ऐप के Keychain के साथ काम करने के लिए इंस्टेंस बनाएँ
let keychain = Keychain(service: "com.example.myapp")

// वैल्यू सेव करें
try keychain.set("my_secret_password", key: "user_password")

// वैल्यू रीड करें
if let password = try keychain.get("user_password") {
    print("मिला पासवर्ड: \(password)")
} else {
    print("पासवर्ड नहीं मिला")
}

// वैल्यू डिलीट करें
try keychain.remove("user_password")

यह कोड तीन मुख्य ऑपरेशन करता है: राइट, रीड और डिलीट। try के माध्यम से एरर हैंडलिंग पर ध्यान दें — Keychain ऑपरेशन एक्सेप्शन फेंक सकते हैं (जैसे, एक्सेस की समस्या या अनुमति न होने पर)।

KeychainAccess के मुख्य मेथड और फंक्शन

अब हम KeychainAccess के कुछ मुख्य मेथड को विस्तार से देखेंगे:

डेटा सेव करना (set मेथड)

set मेथड का उपयोग विभिन्न प्रकार के डेटा को सेव करने के लिए किया जाता है:

// स्ट्रिंग सेव करना
try keychain.set("user@example.com", key: "email")

// डेटा सेव करना
let data = "some data".data(using: .utf8)!
try keychain.set(data, key: "binary_data")

// Codable ऑब्जेक्ट सेव करना (JSON के रूप में)
struct User: Codable {
    let id: Int
    let name: String
}
let user = User(id: 1, name: "राहुल")
try keychain.set(user, key: "current_user")

डेटा पढ़ना (get मेथड)

get मेथड सेव किए गए डेटा को पुनः प्राप्त करता है:

// स्ट्रिंग पढ़ना
if let email = try keychain.get("email") {
    print("ईमेल: \(email)")
}

// डेटा पढ़ना
if let binaryData = try keychain.getData("binary_data") {
    print("बाइनरी डेटा: \(binaryData)")
}

// Codable ऑब्जेक्ट पढ़ना
if let savedUser: User = try keychain.get("current_user") {
    print("उपयोगकर्ता: \(savedUser.name)")
}

डेटा डिलीट करना (remove मेथड)

// एक विशिष्ट कुंजी को डिलीट करें
try keychain.remove("email")

// सभी डेटा को डिलीट करें
try keychain.removeAll()

डेटा अपडेट करना

KeychainAccess में डेटा अपडेट करने के लिए अलग मेथड नहीं है। बस set मेथड का उपयोग करके उसी कुंजी पर नया मान सेट करें:

// पुराना पासवर्ड अपडेट करें
try keychain.set("new_password", key: "user_password")

एक्सेस कंट्रोल और सुरक्षा सेटिंग्स

KeychainAccess आपको यह नियंत्रित करने की अनुमति देता है कि डेटा कब और कैसे एक्सेस किया जा सकता है:

// केवल जब डिवाइस अनलॉक हो तब एक्सेस
let keychain = Keychain(service: "com.example.myapp")
    .accessibility(.whenUnlocked)

// बायोमेट्रिक ऑथेंटिकेशन (Touch ID/Face ID) की आवश्यकता
let keychain = Keychain(service: "com.example.myapp")
    .accessibility(.whenPasscodeSetThisDeviceOnly, authenticationPolicy: .biometryAny)

// iCloud के साथ सिंक्रोनाइज़ करें
let keychain = Keychain(service: "com.example.myapp")
    .synchronizable(true)

निष्कर्ष

KeychainAccess Swift डेवलपर्स के लिए एक आवश्यक लाइब्रेरी है जो संवेदनशील डेटा को सुरक्षित रूप से स्टोर करना चाहते हैं। इसका सरल API, टाइप-सेफ्टी और लचीलापन इसे Keychain Services के साथ काम करने का सबसे अच्छा विकल्प बनाता है। चाहे आप पासवर्ड, टोकन या एन्क्रिप्टेड डेटा स्टोर कर रहे हों, KeychainAccess आपके ऐप को सुरक्षित और विश्वसनीय बनाता है।

अनुशंसाएँ