2013-04-22 9 views
5

नहीं कहा गया है, मैंने सफलतापूर्वक एक क्षेत्र या निगरानी पंजीकृत करने में कामयाब रहा है, मुझे यह पता है क्योंकि didStartMonitoringForRegion विधि निकाल दी गई थी।आईओएस: CLLocationManager की didEnterRegion को

मेरे पास एक MKMapView के साथ एक साधारण परीक्षण ऐप है जहां मैं अपना वर्तमान स्थान देख सकता हूं, मेरे पास भी मेरे क्षेत्र को लाल सर्कल के रूप में मानचित्र पर खींचा गया है, इसलिए मैं वास्तव में 'शारीरिक रूप से' देख सकता हूं कि मैं किस बिंदु पर प्रवेश कर रहा हूं या बाहर निकल रहा हूं यह क्षेत्र। didEnterRegion और didExitRegion विधियों में मेरे पास UIAlertView है जो आग लगती है।

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

मैंने एसओ (मुझे लगता है) पर पढ़ा है कि कभी-कभी यह केवल तभी काम करता है जब आप किसी निश्चित दूरी से क्षेत्र से बाहर निकलते हैं, इसलिए मैं चल रहा था।

एक और 200 मीटर के बाद या तो मैंने UIAlertView को अभी भी दिखाया नहीं था, और वापस चलना शुरू कर दिया। जाहिर है, क्षेत्र में फिर से प्रवेश करने पर, didEnterRegion या तो फायरिंग नहीं कर रहा था।

मैं अपने कोड में कहीं भी [locationManager startUpdatingLocation] पर फोन नहीं कर रहा हूं, क्या मैं होना चाहिए ?? मैं केवल क्षेत्र बना रहा हूं और [locationManager startMonitoringForRegion] पर कॉल कर रहा हूं।

CLLocationManagerDelegate मेरा ऐप प्रतिनिधि है, और यह ठीक लगता है क्योंकि मेरे didStartMonitoringForRegion ठीक से फायरिंग कर रहा है।

क्या मुझे कुछ और याद आ रही है?

+0

आपको 'startUpdatingLocation'' कॉल करने की आवश्यकता नहीं है। मुझे जो कुछ बताता है उससे मुझे कोई समस्या नहीं दिखती है। हो सकता है कि जब आप कुछ कोड पोस्ट करते हैं तो यह मदद करता है। – Felix

+0

क्या आपने इस क्षेत्र के अंदर सत्यापित किया था '[निगरानी वाले क्षेत्र में समन्वय: mapView.userLocation.location.coordinate]' सत्य है और इसके बाहर झूठा है? – Felix

+0

@ phix23 असल में मैंने कोशिश नहीं की, अब मैं धन्यवाद, धन्यवाद! – PaulG

उत्तर

2

प्रलेखन में कहा गया है कि क्षेत्र की निगरानी अन्य स्थान सेवाओं से स्वतंत्र रूप से काम करती है। इसका मतलब है कि इसे startMonitoringForRegion को कॉल करने के लिए पर्याप्त होना चाहिए।

सुनिश्चित करें:

  • [CLLocationManager regionMonitoringAvailable] रिटर्न हाँ
  • CLLocationManager.monitoredRegions वैध क्षेत्रों
  • शामिल

नोट: दस्तावेज़ निर्दिष्ट करता है कि घटनाओं बनाने के 3-5 के बीच ले आग के लिए मिनट।

आईओएस 6 में, 1 और 400 मीटर के बीच त्रिज्या वाले क्षेत्र बेहतरआईफोन 4 एस या बाद के उपकरणों पर बेहतर काम करते हैं। (आईओएस 5 में, 1 से 150 मीटर के बीच त्रिज्या के साथ क्षेत्र आईफोन 4 एस और बाद के उपकरणों पर बेहतर काम करते हैं।) इन उपकरणों पर, एक ऐप उचित क्षेत्र दर्ज या क्षेत्र से बाहर निकलने वाली अधिसूचना 3 से 5 मिनट के भीतर प्राप्त करने की उम्मीद कर सकता है औसत पर, यदि जल्दी नहीं है। डिवाइस अपने पिछले नोटिफिकेशन से 500 मीटर या उससे अधिक ले जाता है के रूप में

और

Apps के रूप में जल्द ही एक अधिसूचना उम्मीद कर सकते हैं। यह अधिसूचनाओं की अपेक्षा नहीं करनी चाहिए, हर पांच मिनट में एक बार से अधिक बार।यदि डिवाइस नेटवर्क से डेटा पुनर्प्राप्त करने में सक्षम है, तो स्थान प्रबंधक पर समय-समय पर अधिसूचनाएं वितरित करने की अधिक संभावना है।

मुझे उम्मीद है कि इससे मदद मिलती है।

+0

क्षेत्र मॉनिटरिंग सक्षम है, लेकिन मैंने इसे आजमाया और हाँ यह काम करता है। प्रतिक्रिया बीटीडब्ल्यू के लिए धन्यवाद! हम्म, आपकी प्रतिक्रिया के अनुसार मैंने बहुत जल्द छोड़ दिया और आगे बढ़ना चाहिए था। – PaulG

+1

इसे क्षेत्र में बदल दिया मॉनिटरिंग उपलब्ध है जो नई कॉल है। बीटीडब्ल्यू, जांचें: http://stackoverflow.com/questions/214416/set-the-location-in-iphone- सिम्युलेटर उम्र के लिए चलने से परीक्षण करने का एक आसान तरीका है। – Nailer

0

एक बात को नोट करने के (आप स्थान का अनुकरण कर रहे हैं): यदि प्रवेश करने

और बाहर निकलने कहा जाता है कभी नहीं है, भले ही आपको लगता है कि आप सही कोड में सब कुछ किया है अगर आप विकलांग स्थान सिमुलेशन जांच करना न भूलें द्वारा:

परियोजना योजना पर जा रहे हैं -> योजना संपादित करें -> स्थान सिमुलेशन अक्षम करें।

मैं भौतिक रूप से बाहर निकलने के दौरान और क्षेत्र में अनुकरण करते हुए क्षेत्र में निगरानी करके अपने क्षेत्र की निगरानी का परीक्षण करने की कोशिश कर रहा था और यह इस कारण से ठीक से मेरे लिए काम नहीं कर रहा था।

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