आप कोरलोकेशन के प्रतिनिधि का उपयोग करना चाहेंगे। जैसे ही आप समन्वय प्राप्त करते हैं, कोरलोकेशन रोकें, टाइमर को 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];
}
}
क्या ऐप पृष्ठभूमि में प्रवेश करने पर काम करना जारी रखेगा? – initWithQuestion
कुछ मोड हाँ। दस्तावेज पढ़ें। – VaporwareWolf
मुझे लगता है कि '' [self.locationManager stopUpdatingLocation] '' को दो बार दिखाया गया है, क्या टाइमरफार्ड विधि '' [self.locationManager startUpdatingLocation] '' होनी चाहिए? मेरा मानना है कि 'self.location = [places lastObject] '' अधिक उपयुक्त है क्योंकि अंतिम वस्तु हमेशा सबसे हालिया है। अंत में, क्या आप समझा सकते हैं कि टाइमर अमान्यता तर्क क्यों कहा जाता है? – initWithQuestion