Я понял это самостоятельно, для всех, у кого была похожая проблема, я сначала включил флаг обновления местоположения в файле Info.plist.Чтобы сделать это, вы должны добавить ключ под названием «Необходимые фоновые режимы» в Xcode 4, а затем в качестве значения выбрать «Регистры приложений для обновлений местоположения»
У меня есть таймер, объявленный так в моем файле .h:
NSTimer *silenceTimer;
@property (nonatomic, retain) NSTimer *silenceTimer;
Затем в файле .m я объявил это так:
UIBackgroundTaskIdentifier bgTask;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
self.silenceTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self
selector:@selector(startLocationServices) userInfo:nil repeats:YES];
Наконец, в методе выбора я сделал следующее:
-(void)startLocationServices {
[locationManager startUpdatingLocation];
[locationManager stopUpdatingLocation];
}
Это создаст таймер, который запускает и немедленно останавливает службы определения местоположения через 5 минут.Этого будет достаточно, чтобы приложение оставалось в живых до бесконечности, если только вы не убьете процесс.