2012-04-19 2 views
4

Я отслеживаю местоположение пользователей в своем приложении, и я останавливаю обновления, когда получаю первое обновление местоположения. Идея состоит в том, чтобы получить только «моментальный снимок» местоположения пользователей один раз, а не отслеживать движение пользователей.iOS 5.1 CoreLocation, значок службы местоположения не исчезает

Однако в iOS 5.1 на устройстве и симуляторе значок службы местоположения в правом верхнем углу экрана не исчезает после начала отслеживания.

На iOS 5.0 (может только тестироваться в симуляторе) значок появляется и исчезает, как ожидалось.

Кто-нибудь знает какие-либо ошибки, которые могут повлиять на CoreLocation в iOS 5.1?

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

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

Заканчивать этот парень: http://bendodson.com/weblog/2012/03/14/ios-5-1-location-services-bug/

+0

Я знаю, что это старый вопрос, но это поведение, которое вы описали это именно то, что он должен делать, если вы используете значительную услугу изменения, но если вы не используете стандартную услугу. Вы помните, что вы использовали? – Rob

+1

Да, я использовал -startUpdatingLocation, не отслеживая значительные изменения, он больше этого не делает. Возможно, это была проблема с SDK iOS в то время или, вероятно, исправлена ​​с iOS 5.1.1. Проблема была в симуляторе и на iPad под управлением iOS 5.1 – Daniel

ответ

4

Я заметил, что это займет некоторое время для того, чтобы исчезнуть (около 10 секунд). Вам может понадобиться остановить обновление местоположения и установить делегат к нулю, когда представление исчезает:

- (void)viewWillDisappear:(BOOL)animated 
{ 
    if ([self isMovingFromParentViewController]) { 
     // Popping the view 
     NSLog(@"MyViewController isMovingFromParentViewController"); 
     [locationManager stopUpdatingLocation]; 
     [locationManager setDelegate:nil]; 
    } 
    [super viewWillDisappear:animated]; 
} 

Примечание: Этот код только IOS 5, и вызывает только тогда, когда точка зрения увольняют и вернуться к родительский вид. Отрегулируйте соответствующим образом.

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

+0

, к сожалению, я это делаю, и я NSLogging обратные вызовы, поэтому я уверен, что это происходит. – Daniel

+0

И остается ли он там более 10 секунд? –

+2

он остался там навсегда;) даже после того, как я убью его из многозадачного бара. Забавно, что я не регистрируюсь для служб фонового местоположения любого вида. – Daniel

2

Идея состоит в том, чтобы получить «моментальный снимок» местоположения пользователей один раз, а не отслеживать движение пользователей.

Также просто хочу получить снимок. После вызова

[locationManager stopUpdatingLocation]; 

на iPhone4S - IOS 5.1.1 значок навигации не исчезает сразу, а с задержкой около 10 секунд. Кроме того, я иногда получаю другое обновление местоположения после вызова stopUpdatingLocation.

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

5

Традиционный метод:
[locationManager stopUpdatingLocation];
недостаточно. Кроме того, необходимо добавить:
[locationManager stopMonitoringSignificantLocationChanges];

Это дубликат this вопроса.


enter image description here

+0

Спасибо за ваш ответ. Я задал этот вопрос, потому что не соблюдал то же поведение с iOS 5.0 и iOS 5.1, следовательно, вопрос iOS 5.1. Это была ошибка в 5.1. – Daniel

+0

Этот ответ действительно и необходим для iOS v6.x. – Irving

Смежные вопросы