2012-11-22 12 views
14

मेरे पास एक ऐप है जो startMonitoringForRegion: और startMonitoringSignificantLocationChanges के संयोजन का उपयोग करता है ताकि यह पता चल सके कि उपयोगकर्ता पृष्ठभूमि में ऐप कहां है। क्या इसका मतलब है कि में UIBackgroundModes कुंजी के लिए मुझे location मान शामिल करने की आवश्यकता है?UIBackgroundModes स्थान और क्षेत्र की निगरानी के साथ महत्वपूर्ण स्थान परिवर्तन

महत्वपूर्ण परिवर्तन स्थान सेवा अत्यधिक क्षुधा है कि उच्च परिशुद्धता स्थान डेटा की जरूरत नहीं है के लिए सिफारिश की है:

यह डॉक्स से एक उद्धरण है। इस सेवा के साथ, स्थान अपडेट केवल तब उत्पन्न होते हैं जब उपयोगकर्ता का स्थान महत्वपूर्ण रूप से बदलता है; इस प्रकार, यह सामाजिक ऐप्स या ऐप्स के लिए आदर्श है जो उपयोगकर्ता को गैर-कृत्रिम, स्थान-प्रासंगिक जानकारी प्रदान करते हैं। यदि कोई अपडेट होता है तो ऐप को निलंबित कर दिया जाता है, तो सिस्टम अद्यतन को संभालने के लिए पृष्ठभूमि में इसे जगाता है। यदि ऐप इस सेवा को शुरू करता है और फिर इसे समाप्त कर दिया जाता है, तो एक नया स्थान उपलब्ध होने पर सिस्टम स्वचालित रूप से ऐप को फिर से लॉन्च करता है। यह सेवा आईओएस 4 और बाद में उपलब्ध है, और यह केवल उन उपकरणों पर उपलब्ध है जिनमें सेलुलर रेडियो होता है।

...

कि उपयोगकर्ता (तब भी जब पृष्ठभूमि में) करने के लिए निरंतर स्थान अद्यतन प्रदान करता है अपने Info.plist फ़ाइल में UIBackgroundModes कुंजी (स्थान मूल्य के साथ) शामिल करके पृष्ठभूमि स्थान सेवाओं को सक्षम कर सकते हैं कोई एप्लिकेशन । UIBackgroundModes कुंजी में इस मान को शामिल करने से सिस्टम को ऐप को निलंबित करने से रोक नहीं दिया जाता है, लेकिन यह सिस्टम को बताता है कि जब भी नया स्थान डेटा वितरित किया जाता है तो उसे ऐप को जगा जाना चाहिए। इस प्रकार, जब भी वे होते हैं, तो यह कुंजी प्रभावी ढंग से ऐप को पृष्ठभूमि अपडेट को संसाधित करने देती है।

इस बात का मेरे व्याख्या यह है कि UIBackgroundModes कुंजी के लिए location मूल्य केवल आवश्यक है यदि अनुप्रयोग एक बैठे एनएवी एप्लिकेशन की तरह है, निरंतर स्थान अद्यतन की जरूरत है।

मैंने location के बिना UIBackgroundModes कुंजी के लिए डिवाइस पर ऐप चलाने का भी प्रयास किया है और यह महत्वपूर्ण स्थान परिवर्तनों की रिपोर्ट करना जारी रखता है और जब कोई क्षेत्र बाहर निकलता है।

इसके अलावा, का एकमात्र स्थान CLLocationManager Class Reference में उल्लिखित है startUpdatingLocation चर्चा में है, जिसका मैं उपयोग नहीं कर रहा हूं।

उत्तर

14

आप location कुंजी के बारे में सही हैं, तो केवल तभी आवश्यक होगा जब आपके ऐप को पृष्ठभूमि में होने पर भी उच्च-परिशुद्धता स्थान अपडेट की आवश्यकता हो। रंकीपर की तरह कुछ इसका उपयोग आपके स्थान को ट्रैक रखने की अनुमति देने के लिए करता है, भले ही आप मल्टीटास्किंग के साथ किसी अन्य ऐप का उपयोग कर रहे हों। From the docs for iOS Keys: UIBackgroundModes

"स्थान": एप्लिकेशन को उपयोगकर्ता के लिए स्थान आधारित जानकारी प्रदान करता है और (के रूप में महत्वपूर्ण परिवर्तन स्थान सेवा के खिलाफ) आवश्यकता मानक स्थान सेवाओं का उपयोग इस सुविधा को लागू करने के लिए।

और

कहाँ पृष्ठभूमि में चल रहा के लिए विकल्प मौजूद हैं, उन विकल्पों के बजाय इस्तेमाल किया जाना चाहिए। उदाहरण के लिए, ऐप पृष्ठभूमि स्थान ऐप के रूप में पंजीकरण करने के बजाय स्थान ईवेंट प्राप्त करने के लिए साइनफिएंट लोकेशन इंटरफ़ेस का उपयोग कर सकते हैं।

क्षेत्रीय निगरानी location कुंजी के बिना काम करेगी। वास्तव में, क्षेत्र की निगरानी किसी विशेष आईओएस कुंजी सक्षम किए बिना काम करेगी।

आप कहते हैं कि आप CLLocationManager का उपयोग नहीं कर रहे हैं, लेकिन यदि आप क्षेत्र की निगरानी का उपयोग कर रहे हैं, तो आपको उस कक्षा का उपयोग करना होगा। वास्तव में क्षेत्र अधिसूचनाएं प्राप्त करने के लिए आपको अपने ऐप के लिए एक स्थान प्रबंधक प्रतिनिधि सेट अप करने की आवश्यकता है।

+0

मेरा मतलब था कि मैं 'startUpdatingLocation' का उपयोग नहीं कर रहा हूं। आपके उत्तर के लिए बहुत बहुत धन्यवाद! –

+0

आह, मुझे मिल गया, क्षमा करें। –

+0

@AdamSwinden मैं अपने ऐप में क्षेत्र की निगरानी का उपयोग कर रहा हूं, और स्थान अपडेट के लिए पृष्ठभूमि मोड पर, इसलिए यदि मुझे पृष्ठभूमि मोड का उपयोग करना है तो मुझे समीक्षाकर्ता को क्या कहना है। –

-1

हां, आपको Info.plist में बैकराउंड मोड के तहत "स्थान" कुंजी जोड़ने की आवश्यकता है यदि आप पृष्ठभूमि में उपयोगकर्ता स्थान की निगरानी करने और ऐप को मारने के लिए महत्वपूर्ण परिवर्तन स्थान सेवा (startMonitoringSignificantLocationChanges) का उपयोग कर रहे हैं।

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

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