2014-09-22 11 views
5

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

SO पर इस प्रश्न से संबंधित कई उत्तर हैं, लेकिन उनमें से बहुत से आईओएस 6 और उससे पहले के साथ सौदा करते हैं। आईओएस 7 के बाद, बहुत से पृष्ठभूमि कार्यों में बदलाव आया है और मुझे पृष्ठभूमि में आवधिक स्थान अपडेट लागू करने का तरीका खोजने में कठिनाई है।

उत्तर

2

आप कोरलोकेशन के प्रतिनिधि का उपयोग करना चाहेंगे। जैसे ही आप समन्वय प्राप्त करते हैं, कोरलोकेशन रोकें, टाइमर को 5 मिनट में फिर से शुरू करने के लिए सेट करें।

आईओएस 8 के साथ, आपको NSLocationWhenInUseUsageDescription और/या NSLocationAlwaysInUseDescription के लिए एक प्लिस्ट प्रविष्टि सेट करने की आवश्यकता होगी।

ऐप्पल दस्तावेज यह सब कुछ करने के तरीके पर बहुत स्पष्ट है।

-(void)startUpdating{ 
    self.locationManager = [[CLLocationManager alloc]init]; 
    self.locationManager.delegate = self; 
    [self.locationManager requestWhenInUseAuthorization]; 
    [self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
    [self.locationManager startUpdatingLocation]; 

} 

-(void)timerFired{ 
    [self.timer invalidate]; 
    _timer = nil; 
    [self.locationManager startUpdatingLocation]; 
} 

// CLLocationDelegate 
- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations{ 
    if(locations.count){ 
     // Optional: check error for desired accuracy 
     self.location = locations[0]; 
     [self.locationManager stopUpdatingLocation]; 
     self.timer = [NSTimer scheduledTimerWithTimeInterval:60 * 5 target:self selector:@selector(timerFired) userInfo:nil repeats:NO]; 
    } 
} 
+0

क्या ऐप पृष्ठभूमि में प्रवेश करने पर काम करना जारी रखेगा? – initWithQuestion

+0

कुछ मोड हाँ। दस्तावेज पढ़ें। – VaporwareWolf

+0

मुझे लगता है कि '' [self.locationManager stopUpdatingLocation] '' को दो बार दिखाया गया है, क्या टाइमरफार्ड विधि '' [self.locationManager startUpdatingLocation] '' होनी चाहिए? मेरा मानना ​​है कि 'self.location = [places lastObject] '' अधिक उपयुक्त है क्योंकि अंतिम वस्तु हमेशा सबसे हालिया है। अंत में, क्या आप समझा सकते हैं कि टाइमर अमान्यता तर्क क्यों कहा जाता है? – initWithQuestion

0

apple documentation पर इसके संबंध में काफी जानकारी है।

इसके अलावा, कुछ अतिरिक्त उत्तर here और here स्टैक ओवरफ्लो से पिछले उत्तरों के साथ हैं। वहां पर्याप्त जानकारी होने लगती है जो आपकी मदद करने में सक्षम होना चाहिए!

+0

उन दोनों उत्तरों आईओएस 8 से पहले हैं और इनमें से कुछ विधियों को पहले से ही बहिष्कृत कर दिया गया है। – initWithQuestion

+1

वे आपको सही दिशा में ले जाने में मदद करने के लिए हैं। जब आपके पास कोई प्रश्न हो, तो आपको आवश्यक जानकारी प्रदान करने में सहायता के लिए दस्तावेज होना चाहिए। पृष्ठभूमि में चल रहे ऐप्स के बारे में ऐप्पल के दस्तावेज़ पर आपको बहुत सारी जानकारी है जो आपको पढ़ना चाहिए। – sdoowhsoj

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