Остановите 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
Другие вопросы по тегам