startMonitoringSignificantLocationИзменения не сработали? - PullRequest
3 голосов
/ 16 октября 2011

Я тестирую приложение, которое использует startMonitoringSignificantLocationChanges на 3GS с IOS 4.01 (я хочу, чтобы мое приложение работало на любой версии IOS4, поэтому я не обновлял ОС на этом устройстве).

info.pllist имеет фоновый ключ «зарегистрирован для обновлений местоположения» (не требуется для startMonitoringSignificantLocationChanges, но нужен в другом месте приложения).

Я обнаружил, что если устройство находится в спящем режиме, а мое приложение находится в фоновом режиме,значительные обновления местоположения не инициируются, даже если я путешествую на большое расстояние (проходя через довольно много вышек сотовой связи) и долгое время.Но как только я нажимаю клавишу «Домой», чтобы разбудить устройство (с моим приложением по-прежнему в фоновом режиме, на переднем плане ничего нет) - обработчик событий местоположения в моем приложении запускается с правильным местоположением для этой области (я могу убедиться, чтоэто важное событие определения местоположения путем проверки точности, превышающей 1000 м).

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

К сожалению, у меня нет устройства с более продвинутой ОС, чтобы проверить это (все мои другие устройства не являются айфонами, и они не поддерживают startMonitoringSignificantLocationChanges).

Это известная проблема, или я делаючто-то не так?

Ответы [ 2 ]

0 голосов
/ 02 мая 2013

Вы просмотрели этот вопрос и его ответы по аналогичной теме?

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

0 голосов
/ 17 октября 2011

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

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

...