2015-09-01 27 views
9

मैं इस कोड में खोद रहा हूं जो स्थान अपडेट की जांच के लिए मूल टाइमर का उपयोग कर रहा है। मैं फिर इसे सर्वर पर lat/lng भेज रहा हूं।आईओएस 9 स्थान अपडेट पृष्ठभूमि कार्य 3 मिनट

http://mobileoop.com/background-location-update-programming-for-ios-7 https://github.com/voyage11/Location

यह अच्छी तरह से जब में खामियों को दूर करने और XCode के माध्यम से झुका काम कर रहा है, लेकिन जब मैं अनप्लग करें और डिवाइस मोबाइल ले, ओएस हमेशा सटीक रूप से 3 मिनट के बाद पृष्ठभूमि धागा को मारने के लिए लगता है। इसलिए यदि मैं टाइमर को हर 30 सेकंड चलाने के लिए सेट करता हूं, तो मुझे ऐप तक अग्रभूमि तक लाने तक ~ 6 अपडेट मिलेंगे।

मैंने पढ़ा है कि अधिकतम पृष्ठभूमि निष्पादन समय 3 मिनट है, लेकिन जैसा कि मैंने देखा है कि यह कोड 1 मिनट के बाद पृष्ठभूमि कार्य को रीसेट कर रहा है, इसलिए मुझे यकीन नहीं है कि मैं इसे क्यों देख रहा हूं।

इसके आसपास कुछ रास्ता होना चाहिए। मैं यहाँ कुछ भी कर सकता हूँ?

संपादित करें: यह मेरे में मदद मिली: allowsBackgroundLocationUpdates in CLLocationManager in iOS9

+0

एरिकिक क्या आपको इसके लिए समाधान मिला? मैंने आपके संपादन में सूचीबद्ध कोड को आजमाया है, सेटिंग बैकग्राउंड लोकेशन अपडेट = हाँ देता है, लेकिन पृष्ठभूमि पृष्ठभूमि जीपीएस मतदान के साथ मुझे अभी भी 3 मिनट के बाद समाप्त कर दिया गया है। क्या पृष्ठभूमि में जीपीएस मतदान करने के लिए आपके द्वारा किए गए कोई अतिरिक्त बदलाव किए गए थे? – haplo1384

+0

हे! हाँ वास्तव में। तो मुझे एहसास हुआ कि पृष्ठभूमि ध्रुव की जरूरत नहीं है। मैं बस बस UIBackgroundModes स्थान पर सेट है। यह सिर्फ उस बिंदु पर काम करता है – aherrick

उत्तर

6

se:

if ([self.locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) { 
    [self.locationManager setAllowsBackgroundLocationUpdates:YES]; 
} 

इस पृष्ठभूमि स्थान पर नज़र रखने के लिए आवश्यक है।

2

मामले में किसी और को इस मुद्दे में चलाता है, GitHub रेपो में कोड ऊपर सूचीबद्ध - https://github.com/voyage11/Location - हाल ही में iOS 9 के लिए एक ठीक से अद्यतन किया गया है, कि अनुमति देगा 3 मिनट के बाद थ्रेड समाप्त होने के बिना पृष्ठभूमि में निरंतर मतदान करने के लिए जीपीएस।

0

मामले में किसी को भी जब इस अन्यथा उत्कृष्ट पुस्तकालय, एक और अधिक परिष्कृत अनुप्रयोग में अन्य xcode मॉड्यूल में एकीकृत चल unreliablity समस्याओं में चलाता है, वे पृष्ठभूमि कार्य सूची क्रमांक सरणी के लिए initialisation बयान को देखो और _bgTaskIdList = [NSMutableArray array]; to _bgTaskIdList = [[NSMutableArray alloc]init]; in BackgroundTaskManager.m बदलते तक मैंने किया था पर विचार हो सकता यह मुझे अविश्वसनीय व्यवहार मिला। कभी-कभी यह काम करता है और कभी-कभी मुझे एक स्टैक डंप मिला। मैंने पाया कि ऐसा इसलिए था क्योंकि bgTaskList को अन्य डेटा के साथ ओवरराइट किया गया था जिससे खराब पहुंच त्रुटियां उत्पन्न हुईं।

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