Остановите CLLocationManager, когда пользователь останавливает приложение, используя Fast App Switcher
Я разрабатываю приложение для iOS, которое использует CLLocationManager для получения данных GPS.
Как правильно остановить CLLocationManager, когда пользователь нажимает кнопку "Домой", а затем убивает приложение, используя быстрый переключатель приложений?
Как я могу остановить CLLocationManager и остановить опрос GPS-данных? Кто-нибудь знает хороший способ добиться этого, потому что обычно я не могу выполнить любой код, когда пользователь убивает приложение....
РЕДАКТИРОВАТЬ: Когда я отправляю приложение в фоновом режиме, он все равно должен получить значительный LocationChanges, поэтому я не могу остановить CLLocationManager, когда приложение отправляется в фоновом режиме!
1 ответ
В AppDelegate есть метод с именем applicationWillResignActive. Этот метод запускается, когда ваше приложение будет отправлено в фоновом режиме. Если у вас есть доступ к CLLocationManager из вашего AppDelegate, вы можете остановить его прямо здесь. В противном случае вы можете опубликовать Уведомление из applicationWillResignActive, и любой класс, имеющий ваш CLLocationManager, может подписаться на это Уведомление и обработать его оттуда.
Опубликовать уведомление, как это:
[[NSNotificationCenter defaultCenter] postNotificationName:@"appWillResignActive" object:nil];
И подписывайтесь так:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleResign:) name:@"appWillResignActive" object:nil];
Тогда какой-то метод, как это:
- (void)handleResign: (NSNotification *)notification
{
// stop CLLocationManager
}
РЕДАКТИРОВАТЬ: Если вы хотите запустить код, когда приложение убивается, вы можете запустить этот код в этом методе в AppDelegate:
- (void)applicationWillTerminate:(UIApplication *)application