Как выборочно включить фоновую обработку в iOS4 - PullRequest
1 голос
/ 21 сентября 2011

Я успешно включил фоновую обработку для своего приложения Core Location.Чтобы убедиться, что я на правильном пути, вот краткий обзор того, как я реализовал фоновый режим ENTERING:

1: info.plist: Добавлен ключ «Необходимые фоновые режимы» со значением «Регистры приложения для обновлений местоположения»"

2:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [self.locationManager stopUpdatingLocation];
    [self.locationManager startMonitoringSignificantLocationChanges];
}

При выходе из фонового режима я сделал это с помощью этого кода:

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    self.locationManager.delegate = self;
    [self.locationManager stopMonitoringSignificantLocationChanges];
    [self.locationManager startUpdatingLocation];
}

Кажется, это работает хорошо, так как я получаю сообщения о местоположениипока мой айфон выключен.Буду признателен за любые советы относительно того, считается ли этот подход «наилучшей практикой».

Меня беспокоит то, что даже когда приложение закрывается на iPhone в явном виде, стрелка «Службы определения местоположения» все еще отображается в строке состояния.

У меня такой вопрос: возможно ли программно включить / отключить фоновую обработку приложения?

Моя причина в том, что если мой пользователь не хочет использовать часть моего приложения с информацией о местоположении, я бынравится предотвращать обработку приложения в фоновом режиме, даже если оно не получает местоположения.

Большое спасибо за любую информацию!


Спасибо за ваши быстрые ответы.Кажется, что происходит, что, хотя я запускаю

[self.locationManager stopMonitoringSignificantLocationChanges];

и

[self.locationManager stopUpdatingLocation];

, стрелка Служб определения местоположения в строке состояния остается включенной, даже когда мое приложение завершилось.Я также принудительно прервал его, но стрелка остается.

У меня также нет других приложений, которые работают как приостановленные.Я заглянул в «Настройки»> «Службы определения местоположения»> «MyApp» и увидел, что и myApp, и встроенное приложение «Карты» указывают, что они в настоящее время используют службы определения местоположения, однако ни один из них на самом деле не работает.

Кто-нибудь знает, почемуэто происходит?Может ли быть так, что я не освобождаю ресурсы должным образом, когда мое приложение либо переходит в фоновый режим, либо закрывается?

Все ответы очень ценятся.

1 Ответ

0 голосов
/ 21 сентября 2011

Вы можете сохранить параметр, сохраненный в NSUserDefaults, и использовать его независимо от того, хотите ли вы включить фоновые службы определения местоположения.

NSUserDefaults *defaults = [NSUserDefaults standardDefaults];
someFlag = [defaults boolForKey:@"gpsOnOff"];

if (someFlag) {
   // enable background services
}
...