У меня проблема с работой GPS в фоновом режиме.
Мне удалось сохранить работу GPS, когда приложение находится в фоновом режиме, но иногда оно останавливается. Я заметил, что он останавливается, когда я вхожу в здание, и я остаюсь там на 2-3 часа. «Остановки» означает, что я не получаю ни одной точки GPS, хотя значок службы определения местоположения все еще горит. Затем, когда я выхожу, я не получаю никаких очков, пока не выведу свое приложение на передний план.
Я установил для свойства pausesLocationUpdatesAutomatically значение NO.
Итак, все работает нормально, пока я не попаду в место со слабым сигналом GPS. Когда я выхожу из этой области, я больше не получаю очки, хотя должен, потому что сигнал GPS теперь хороший.
И вот мой код, когда приложения входят в фоновый режим:
- (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"[AppDelegate]: Application entering in background!");
if(doesUserWantGPSTracking)
{
[self stopGPS];
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:
^{
dispatch_async(dispatch_get_main_queue(),
^{
if( bgTask != UIBackgroundTaskInvalid )
{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^{
[self startGPS];
dispatch_async(dispatch_get_main_queue(), ^{
if( bgTask != UIBackgroundTaskInvalid )
{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
});
});
}
}