मैं इस कोड वापस एक दिए गए उपयोगकर्ता नाम NSString के लिए कीचेन से एक पासवर्ड हो रही है:आईओएस SFHFKeychainUtils असफल * कभी कभी * त्रुटि -25,308 साथ errSecInteractionNotAllowed
NSError *error = nil;
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
NSString *pw = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:appName error:&error];
if(error != nil)
// log the error
अधिकांश समय अधिकांश उपयोगकर्ताओं के लिए यह सब ठीक काम करता है - लेकिन कुछ विशिष्ट उपयोगकर्ताओं के लिए इस कॉल विफल (और असफल रहने पर ले जाने के) जहां यह निम्नलिखित त्रुटि देता है लगता है:
The operation couldn’t be completed. (SFHFKeychainUtilsErrorDomain error -25308.)
जाहिरा तौर पर errSecInteractionNotAllowed है - जहाँ से मैं क्या पढ़ा है मैं लगता इसका मतलब है कि चाबी का उपयोग करने के लिए किसी प्रकार का उपयोगकर्ता इंटरैक्शन आवश्यक है।
क्या किसी को पता है कि यह कॉल केवल कुछ विशिष्ट उपयोगकर्ताओं के लिए क्यों विफल हो सकती है? यह कीचेन प्रविष्टि मेरे ऐप के लिए विशिष्ट है - तो इसका उपयोग करने के लिए किसी भी उपयोगकर्ता इंटरैक्शन की आवश्यकता क्यों होगी?
बहुत सराहना किसी भी संकेत दिए गए ...
मैं iOS4, iOS5 और iOS6 पर इस की पुष्टि कर लें। सभी आईओएस संस्करणों पर errSecInteractionNotAllowed त्रुटि कोड वापस किया जाता है यदि डेटा जो KSecAttrAccessibleAlways के साथ चिह्नित नहीं है, तब पढ़ा जाता है जब आपका डिवाइस लॉक स्थिति में होता है (जैसे पृष्ठभूमि कार्य, न्यूजस्टैंड डाउनलोड इत्यादि)। –
kSecAttrAccessibleAlways एक शानदार विकल्प नहीं है - आप अधिक सुरक्षा लाभ प्राप्त कर सकते हैं, और अभी भी त्रुटि से बच सकते हैं, जैसे कि KSecAttrAccessibleAfterFirstUnlock (या इससे भी अधिक प्रतिबंधक सेटिंग, यदि यह आपके ऐप के लिए काम करता है) का उपयोग कर। – frankodwyer
मैं पुष्टि कर सकता हूं कि, जब ऐप अग्रभूमि में है लेकिन डिवाइस पासवर्ड से लॉक है, तो कीचेन लाइब्रेरी मुझे -25308 देती है। धन्यवाद ! – Magurizio