2012-01-08 13 views
9

मेरे ऐप को पासवर्ड के लिए संकेत देने की आवश्यकता है यदि वह अंतिम बार अपना पासवर्ड दर्ज करने के 60 मिनट से अधिक हो, या यदि उपयोगकर्ता डिवाइस को लॉक करने के बाद ऐप में प्रवेश करता है।आप कैसे बता सकते हैं कि आईफोन लॉक हो गया है या नहीं?

समस्या यह जानती है कि डिवाइस लॉक हो जाने पर समस्या है। यदि उपयोगकर्ता केवल एप्लिकेशन के बीच स्विच कर रहा है, तो ऐप को पासवर्ड के लिए संकेत देने की आवश्यकता नहीं है जब तक कि यह अंतिम पासवर्ड प्रॉम्प्ट के 60 मिनट बाद न हो। अगर वे डिवाइस को लॉक करते हैं, तो 60 मिनट से कम होने पर भी फिर से संकेत दें।

सूचनाएं ऐसे applicationWillResignActive मदद नहीं क्योंकि मैं निर्धारित नहीं कर सकता है, तो एप्लिकेशन को उपकरण बंद होने या अन्य ऐप को उपयोगकर्ता स्विचिंग की वजह से सक्रिय इस्तीफा दे दिया जाता है।

खोज में, मैं पदों कहना है कि मैं UIApplicationProtectedDataWillBecomeUnavailable अधिसूचना का पालन करने के रजिस्टर कर सकते हैं पाया।

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; 
[nc addObserver:self selector:@selector(protectedDataWillBecomeUnavailable:) 
      name:UIApplicationProtectedDataWillBecomeUnavailable object:nil]; 

जब मुझे यह अधिसूचना मिलती है तो अगली बार ऐप सक्रिय होने पर उपयोगकर्ता के पासवर्ड के लिए संकेत देने के लिए एक झंडा सेट करता है। लेकिन मेरे परीक्षण से पता चला है कि यह अधिसूचना नहीं भेजी गई है जब तक डिवाइस में पासकोड सेटअप न हो।

मैंने सभी अधिसूचनाओं का निरीक्षण करने के लिए टेस्ट कोड लिखा है, और मुझे कोई अन्य सूचनाएं नहीं दिखाई देती हैं जो इंगित करती हैं कि डिवाइस लॉक हो रहा है।

क्या डिवाइस को लॉक होने पर जानने का कोई और तरीका है?

+1

[लॉक अनलॉक इवेंट आईफोन] के संभावित डुप्लिकेट (http: // stackoverflow।कॉम/प्रश्न/706344/लॉक-अनलॉक-इवेंट्स-आईफोन) –

+0

शायद कारण, आपको निम्न सूचनाओं के कारण कहा गया नोटिफिकेशन प्राप्त नहीं हुआ है: "ये केवल तभी लागू होते हैं जब उपयोगकर्ता के पास अपना डिवाइस पासकोड संरक्षित होता है, डेटा प्रोटेक्शन होता है सिम्युलेटर में उपलब्ध नहीं है। " –

उत्तर

2

यह प्रश्न मुझे चिंतित करता है, इसलिए मैंने जिज्ञासा से थोड़ा सा देखा। हालांकि यह प्रकट नहीं होता है कि एक आसान अधिसूचना भेजी गई है, एक्सेलेरोमीटर का उपयोग करके एक चालाक हैक दिखाई देता है। यहाँ है कि के लिए एक लिंक है:

Lock Unlock events iphone

+0

धन्यवाद! यह एक चालाक तकनीक है। हालांकि, ऐप को पृष्ठभूमि में जिंदा रहना होगा, जिसे मैं टालना चाहूंगा। – jimmyg

+0

सच है, आदर्श रूप से UIAplplicationProtectedDataWillBecomeUnavailable के समान एक अधिसूचना भेजी जाएगी। –

0

अधिक सरल तरीका है - बस UIApplicationDidBecomeActiveNotification अधिसूचना को पकड़ने और पिछले पकड़ के बाद से पारित कर दिया समय को मापने। लेकिन जब उपयोगकर्ता ऐप को टैप करता है तो टाइमर को रीसेट करने की आवश्यकता होती है। यह ऐप विंडो में सभी टैप ईवेंट को पकड़कर किया जा सकता है। अंतिम टैप और UIAplplicationDidBecomeActiveNotification के बीच का समय आपको वास्तविक टाइमआउट देगा। वर्तमान और हालिया UIAplplicationDidBecomeActiveNotification के बीच समय की जांच करने की भी आवश्यकता है - यह अंतिम टैप और UIAplplicationDidBecomeActiveNotification के बीच से कम हो सकता है।

UIApplicationDidBecomeActiveNotification निकाल दिया जब:

  1. अनुप्रयोग की शुरूआत
  2. अनुप्रयोग पृष्ठभूमि
  3. एप्लिकेशन को अनलॉक कर दिया जा रहा से बहाल किया
  4. फोन कॉल समाप्त हो

अर्थात हर बार जब कुछ क्रिया के बाद स्क्रीन पर ऐप दिखाई देता है।

+0

धन्यवाद। यह सहायक होगा अगर केवल मुझे यह बताया गया कि ऐप चलाने के आखिरी बार डिवाइस लॉक हो गया था या नहीं। यदि डिवाइस लॉक किया गया था तो ऐप को पासवर्ड के लिए संकेत देने की आवश्यकता है। अगर इसे लॉक नहीं किया गया था, तो यह देखने की ज़रूरत है कि यह पासवर्ड के लिए आखिरी बार 60 मिनट हो गया है या नहीं। मैं 60 मिनट के लिए जांच संभाल कर सकते हैं। मुझे नहीं पता कि फोन पहले लॉक किया गया था या नहीं। – jimmyg

संबंधित मुद्दे

 संबंधित मुद्दे