2011-10-29 16 views
15

के बारे में स्पष्टीकरण की आवश्यकता है मुझे ऐप के विभिन्न राज्यों की मेरी समझ को स्पष्ट करने में आपकी सहायता चाहिए। मैं अपनी व्याख्या बताने जा रहा हूं - लेकिन कृपया मुझे सही करने के लिए स्वतंत्र महसूस करें।UIApplicationState

1) अनुप्रयोग का शुभारंभ किया और अग्रभूमि में चल रहा है: राज्य = UIApplicationStateActive
2) उपयोगकर्ता घर बटन को दबाने के: राज्य = UIApplicationStateBackground (????)।

Debug stmt in my app shows it to be Active 

3) उपयोगकर्ता डबल नल घर और एप्लिकेशन को मारता है: राज्य = UIApplicationStateInactive

तो मामला 2 के लिए मूल्य वास्तव में सक्रिय है, तो जब मूल्य पृष्ठभूमि पर सेट है?

मेरा स्थान-आधारित ऐप उपयोगकर्ता के लिए उपयुक्त कार्रवाई करने के लिए इस मान पर निर्भर करता है।

if (([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) || 
    ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive)  ) { 
    // isInBackground = YES; 
    // ------ UI not available 
} 
else { 
    // isInBackground = NO; 
    // ------ UI is available 
} 

सम्मान, सैम।

उत्तर

51

उपयोगकर्ता एप्लिकेशन आइकन पर टैप करता है, एप्लिकेशन संक्षिप्त UIApplicationStateActive बनने के लिए UIApplicationStateInactive की राह पर की एक संक्रमणकालीन राज्य के माध्यम से चला जाता है। यह वह जगह है जहां ऐप उपयोगकर्ता को प्रदर्शित करने के लिए तैयार हो जाता है।

जब ऐप खुला होता है, तो एप्लिकेशन स्थिति UIApplicationStateActive है।

उपयोगकर्ता होम बटन दबाता है, तो और मंच (होम स्क्रीन) के लिए वापस आ रहा है, या आवेदन को एक फोन कॉल, आवेदन राज्य संक्रमण वापस UIApplicationStateInactive के रूप में, कुछ द्वारा बाधित है।

आपके ऐप की आवेदन स्थिति UIApplicationStateBackground बनने के लिए, आपके आवेदन को पृष्ठभूमि प्रक्रिया के लिए पंजीकरण करना होगा। अपनी स्थान सेवाओं को पृष्ठभूमि में कैसे देखें।

+1

धन्यवाद !! बहुत स्पष्ट रूप से समझाया। – Sam

+3

@forgot यह पूरी तरह से सच नहीं है। 'ऐप अग्रभूमि में चल रहा है लेकिन वर्तमान में ईवेंट प्राप्त नहीं कर रहा है। (हालांकि यह अन्य कोड निष्पादित कर सकता है।) आमतौर पर एक ऐप इस स्थिति में थोड़ी देर के रूप में रहता है क्योंकि यह एक अलग राज्य में संक्रमण करता है। 'यह सेब डॉक्टर ने कहा। आप यहां और जान सकते हैं। http: //developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html – Kamarshad

+0

मैं समझता हूं कि, यह अभी भी इस सवाल से संबंधित नहीं प्रतीत होता समय। मैं इसे एक और पूर्ण उत्तर दिखाने के लिए संपादित कर दूंगा। – forgot

2

एप्पल प्रलेखन: UIApplicationState Constants Reference

  • स्विफ्ट: .Active | ऑब्जेक्टिव-सी: UIApplicationStateActive

एप्लिकेशन को अग्रभूमि में चल रहा है और वर्तमान में घटनाओं प्राप्त करते हुए।

आईओएस 4.0 और बाद में उपलब्ध है।

  • स्विफ्ट: .Inactive | ऑब्जेक्टिव-सी: UIApplicationStateInactive

एप्लिकेशन को अग्रभूमि में चल रहा है, लेकिन घटनाओं प्राप्त नहीं हो रहे।यह किसी बाधा के परिणामस्वरूप हो सकता है या क्योंकि ऐप पृष्ठभूमि से या उससे संक्रमण कर रहा है।

आईओएस 4.0 और बाद में उपलब्ध है।

  • स्विफ्ट: .Background | ऑब्जेक्टिव-सी: UIApplicationStateBackground

एप्लिकेशन पृष्ठभूमि में चल रहा है।

आईओएस 4.0 और बाद में उपलब्ध है।

0

कुछ उदाहरण:

UIApplicationStateActive - ऐप अग्रभूमि में चल रहा है। सरल।

UIApplicationStateInactive - E.g. ऐप पृष्ठभूमि में था और पुश अधिसूचना (एटीएम संक्रमण) के माध्यम से खुल रहा है। या नियंत्रण/अधिसूचना केंद्र आपके ऐप के ऊपर प्रस्तुत किया गया है। आप इसे देखते हैं, अग्रभूमि में है।

UIApplicationStateBackground - ऐप पृष्ठभूमि में है, लेकिन अभी भी चल रहा है। ईजी। संगीत बजाना। फिर - इसमें कुछ समय लग सकता है या नहीं (उस प्रक्रिया के आधार पर जो आप पृष्ठभूमि में चल रहे हैं), लेकिन एक बिंदु पर आपका ऐप मारे गए हैं। आप ऐप के स्नैपशॉट और कम से कम ऐप्स के बीच आइकन देखेंगे, लेकिन ऐप पहले लॉन्च होगा।