iPhone GPS w tle nigdy nie powraca po przerwie

Moja aplikacja musi śledzić zmiany lokalizacji użytkownika w tle i działa dobrze, dopóki użytkownik się porusza. Gdy użytkownik zatrzymuje się iCLLocationManager zatrzymuje się po około 10-20 minutach. Wskazuje na to to powiadomienie:

-(void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager{}

I to również jest dla mnie w porządku. Świetnie, oszczędzam trochę baterii itp.

Problemem jestCLLocationManager nigdy nie budzi się, gdy użytkownik zaczyna się poruszać i podąża za nimmetody delegowania nigdy nie są uruchamiane, dopóki nie umieszczę mojej aplikacji na pierwszym planie (staje się aktywny):

//Never called back after CLLocationManager pauses:
-(void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager{}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{}

Dlaczego jestlocationManagerDidResumeLocationUpdates nigdy nie zadzwonił po ponownym uruchomieniu urządzenia? Czy GPS nie powinien automatycznie wznawiać pracy (ponieważ został automatycznie wstrzymany)? Czy istnieje sposób na wznowienie GPS bez interakcji użytkownika?

Aplikacja ma następujące deklaracje w pliku Info.plist:

A moje ustawienia CLLocationManager to:

locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager setActivityType:CLActivityTypeFitness];
//I WANT pauses to save some battery, etc... That is why following line is commented out (default)
 //[locationManager setPausesLocationUpdatesAutomatically:NO];
 locationManager.distanceFilter = kCLLocationAccuracyNearestTenMeters;
 locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
 [locationManager startUpdatingLocation];

questionAnswers(3)

yourAnswerToTheQuestion