IOS 6 AutoPause не работает

Я следую примеру AutoPause из " Сессия 303 - Пребывание на дорожке из служб местоположения". WWDC 2012

В этом примере вы можете увидеть, как включен AutoPause, и есть два метода, которые вызываются:

-(void) locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager
-(void) locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager

Я сделал тот же пример, но эти методы никогда не вызываются. Кто пробовал то же самое?

Ответ 1

Я экспериментирую с этим прямо сейчас, и вот мои наблюдения:

На iPhone 4, который не работает вообще. Даже если вы установили pausesLocationUpdatesAutomatically в YES, он сохраняет pausesLocationUpdatesAutomatically как NO (0). Никаких предупреждений, какой анти-шаблон для API-интерфейса не существует!

На iPhone 5 pausesLocationUpdatesAutomatically - ДА (1) по умолчанию. Вызывается locationManagerDidPauseLocationUpdates. Мне не повезло, когда вызывается имя locationManagerDidResumeLocationUpdates. Я также озадачен тем, как это будет вызываться, если GPS отключен? Будет ли это вызвано, как только пользователь достигнет следующей ячейки сети? Даже это не мой опыт, он никогда не называется.

Пока, я считаю, что это одна из наименее последовательных изменений в iOS6. Я могу использовать только pausesLocationUpdatesAutomatically = НЕТ для всех сценариев и будет надеяться, что это нормально для всех моделей с iOS6.

[Обновление - 4 марта 2013]. Я просмотрел презентацию Apple для изменения местоположения в iOS6, и они предлагают использовать мониторинг изменений в регионе для "отмены паузы" после получения события изменения области. Хотя это не подходит для моих сценариев, так как пользователь может пойти/запустить/диск на километр или два, пока такое событие не произойдет.

Ответ 2

У меня была та же проблема и нашлось, что вам нужно установить свойство pausesLocationUpdatesAutomatically на YES