यह यहां से अनुभाग है CLLocationManager प्रलेखन के साथ एप्लिकेशन व्यवहार का वर्णन startMonitoringSignificantLocationChanges :
यदि आप इस सेवा को शुरू करते हैं और आपका आवेदन बाद में समाप्त हो जाता है, तो सिस्टम स्वचालित रूप से एक नई घटना के आने पर एप्लिकेशन को बैकग्राउंड में वापस भेज देता है। ऐसे मामले में, विकल्प शब्दकोश आवेदन के लिए पारित किया: didFishishLaunchingWithOptions: आपके आवेदन प्रतिनिधि के तरीके में प्रमुख UIApplicationLaunchOptionsLocationKey शामिल है जो यह बताता है कि आपका आवेदन किसी स्थान घटना के कारण लॉन्च किया गया था। पुनः कनेक्ट होने पर, आपको अभी भी एक स्थान प्रबंधक ऑब्जेक्ट को कॉन्फ़िगर करना होगा और स्थान घटनाओं को प्राप्त करने के लिए इस विधि को कॉल करना होगा। जब आप स्थान सेवाओं को फिर से शुरू करते हैं, तो वर्तमान घटना आपके प्रतिनिधि को तुरंत दे दी जाती है। इसके अलावा, आपके लोकेशन मैनेजर ऑब्जेक्ट की लोकेशन लोकेशन सर्विस शुरू करने से पहले ही सबसे हाल की लोकेशन ऑब्जेक्ट से पॉपुलेट हो जाती है।
तो मैं समझता हूँ कि यदि आपका ऐप्स समाप्त (और मुझे लगता है अगर तुम फोन नहीं है stopMonitoringSignificantLocationChanges से applicationWillTerminate ) यदि आप एक साथ उठ जाएगा UIApplicationLaunchOptionsLocationKey पैरामीटर didFinishLaunchingWithOptions: आवेदन । उस बिंदु पर आप अपना CLLocationManager बनाते हैं , startMonitoringSignificantLocationChanges को कॉल करते हैं और सीमित समय के लिए अपना बैकग्राउंड लोकेशन प्रोसेसिंग करते हैं । इसलिए मैं इस बिट के साथ ठीक हूं।
पिछला पैराग्राफ केवल इस बारे में बात करता है कि ऐप के समाप्त होने पर क्या होता है, यह सुझाव नहीं देता कि आप क्या करते हैं जब एप्लिकेशन निलंबित हो। दस्तावेज़ के लिए फ़ाइनशिशलॉन्चिंगथाइथॉसेस कहते हैं:
अनुप्रयोग पृष्ठभूमि में स्थान अपडेट को ट्रैक करता है, शुद्ध किया गया था, और अब इसे पुन: लॉन्च किया गया है। इस मामले में, शब्दकोश में एक महत्वपूर्ण संकेत होता है कि एक नए स्थान के कारण एप्लिकेशन को फिर से लॉन्च किया गया था।
यह सुझाव देते हुए कि जब आपका एप्लिकेशन समाप्त हो जाएगा (केवल स्थान परिवर्तन के कारण) आपके समाप्त होने के बाद आपको यह कॉल प्राप्त होगी।
हालाँकि अवेयरनेस प्रोग्रामिंग गाइड में महत्वपूर्ण बदलाव सेवा पर दिए गए पैराग्राफ में निम्नलिखित बातें हैं:
यदि आप इस सेवा को चलाना छोड़ देते हैं और आपके आवेदन को बाद में निलंबित या समाप्त कर दिया जाता है, तो नए स्थान डेटा आने पर सेवा स्वचालित रूप से आपके आवेदन को जगा देती है। वेक-अप समय पर, आपके एप्लिकेशन को बैकग्राउंड में डाल दिया जाता है और स्थान डेटा को संसाधित करने के लिए बहुत कम समय दिया जाता है। क्योंकि आपका एप्लिकेशन पृष्ठभूमि में है, इसलिए उसे कम से कम काम करना चाहिए और किसी भी कार्य (जैसे कि नेटवर्क को क्वेरी करना) से बचना चाहिए जो उसे आवंटित समय समाप्त होने से पहले लौटने से रोक सकता है। यदि ऐसा नहीं होता है, तो आपका आवेदन समाप्त हो सकता है।
यह बताता है कि यदि आपका ऐप निलंबित कर दिया गया है, तो आप स्थान डेटा के साथ जाग गए हैं, लेकिन यह उल्लेख करने में विफल हैं कि आप कैसे जाग गए हैं:
- क्या UIApplicationDelegate को कॉलबैक मिलता है जो मुझे बताता है कि मैं एक निलंबित स्थिति से एक पृष्ठभूमि राज्य में फिर से शुरू कर रहा हूं?
- क्या स्थान प्रबंधक (जो एप्लिकेशन को निलंबित कर दिया गया था जब फ्रीज सूख गया था) स्थान प्राप्त करना शुरू कर रहा है प्रबंधक: didUpdateToLocation: fromLocation कॉलबैक?
- क्या मुझे अपने didUpdateToLocation संदेश में कोड लागू करने की आवश्यकता है जो एप्लिकेशन स्थिति की जांच करता है और यदि पृष्ठभूमि मोड में न्यूनतम प्रसंस्करण होता है?
इसे लिखने की प्रक्रिया में, मुझे लगता है कि मैंने अभी अपने प्रश्न का उत्तर दिया हो सकता है, लेकिन इस बारे में मेरी समझ किसी भी अधिक जानकार द्वारा पुष्टि की जाए तो बहुत अच्छा होगा।