मैं वर्तमान में उपयोगकर्ता नाम (ईमेल) और iOS कीचेन में ईमेल और पासवर्ड का नमकीन हैश स्टोर कर रहा हूं। मैं यहां पाए गए ARC'ified संस्करण का उपयोग कर रहा हूं ।
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
[wrapper setObject:APP_NAME forKey:(__bridge id)kSecAttrService];
[wrapper setObject:email forKey:(__bridge id)kSecAttrAccount];
[wrapper setObject:token forKey:(__bridge id)kSecValueData];
यह सब ठीक काम करता है जब मुझे ऐप सक्रिय होने के दौरान अपने नेटवर्क कॉल के लिए टोकन बाहर खींचने की आवश्यकता होती है। यह एक स्वच्छ स्टार्टअप से प्रवेश करने के लिए काम करता है, साथ ही साथ सभी नेटवर्क कॉल पूरे भर में करता है। मुसीबत तब शुरू होती है जब ऐप बैकग्राउंड में होता है।
ध्यान रखें, यह केवल छिटपुट रूप से होता है और मुझे इसे अभी तक एक विशिष्ट iOS संस्करण या डिवाइस पर पिन करना है।
उपयोगकर्ता एक स्थान (क्षेत्र की निगरानी) का दौरा करता है और मैं सर्वर को उनकी स्थिति के साथ अद्यतन करना चाहता हूं। मैं किचेन से टोकन खींचने की कोशिश करता हूं, उसी तरह मैं हर दूसरे नेटवर्क कॉल के लिए करता हूं, और स्टेटस अपडेट करता हूं। लेकिन कुछ उपयोगकर्ताओं के लिए, मान शून्य है। इसके बिना, मैं नेटवर्क सामग्री को अपडेट नहीं कर सकता। यह काम अधिकांश के लिए क्यों होगा, लेकिन एक छोटे प्रतिशत के लिए नहीं?
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
NSString *token = [wrapper objectForKey:(__bridge id)kSecValueData];
मैं keychainwrapper के गैर-एआरसी संस्करण पर वापस गया हूं, लेकिन मुझे अभी भी वही परिणाम मिलते हैं। मैं इस पर किसी भी प्रतिक्रिया की सराहना करता हूं। यह मेरे उपयोगकर्ताओं का एक छोटा सा हिस्सा है, लेकिन यह एक ऐसा मुद्दा है जिसे मैं ठीक करना चाहता हूं और इसके बारे में चिंता नहीं करना चाहिए। अग्रिम में धन्यवाद।
इसके अलावा, मेरे सभी बैकग्राउंड वर्क को टाइम आउट से चीजों को रोकने के लिए एक बैकग्राउंड में सेट किया गया है। मुझे किचेन के आस-पास के काम से कोई समस्या नहीं है, लेकिन मैं तब तक चीजों को आगे नहीं बढ़ने देता जब तक कि मेरा टोकन नहीं भर जाता।
संपादित करें, मैंने अपने मुद्दे का पता लगा लिया है क्योंकि वे कीचेन पृष्ठभूमि से मूल्यों को प्राप्त नहीं कर रहे हैं। मैं नीचे दिए गए उत्तर को पोस्ट करूँगा और इसे स्वीकार कर लूंगा क्योंकि मुझे लगता है कि यह प्रश्न बाद में दूसरों के लिए मूल्यवान हो सकता है।