Остановите обновления основного местоположения, а затем перезапустите их с помощью таймера.

StackOverflow https://stackoverflow.com/questions/2698361

Вопрос

Мне было интересно, может ли кто-нибудь указать мне (или вставить) какой-нибудь код, позволяющий отключить обновления Core Location для экономии энергии.

Насколько я понимаю, вам следует прекратить обновление Core Location, как только вы получите показания желаемой точности.Если через определенное время вы не получите хороших показаний точности, вам также следует остановить обновления (предположительно с помощью таймера).Каждый раз, когда вы прекращаете обновления, вам следует запускать таймер (около 60 секунд), чтобы перезапустить Core Location и получить новые показания.

Есть ли код Apple, который все это делает?Пример кода LocateMe, TaggedLocations и Locations, похоже, этого не делает.

Это было полезно?

Решение

В примере LocateMe есть необходимый вам код.Вам просто нужно создать второй селектор для запуска.LocateMe вызывает в своем методе настройки следующее:

    [self performSelector:@selector(stopUpdatingLocation:) withObject:@"Timed Out" afterDelay:[[setupInfo objectForKey:kSetupInfoKeyTimeout] doubleValue]];

Там написано, что через определенное время (kSetupInfoKeyTimeout) позвоните в stopUpdatingLocation метод аргумент NSString = "Timed Out".Внутри stopUpdatingLocation метод, [locationManager stopUpdatingLocation] вызывается, чтобы сообщить CoreLocation об остановке.

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

[self performSelector:@selector(timeToRestartCoreLocation) afterDelay: 60];

внутри stopUpdatingLocation метод, который будет вызывать timeToRestartCoreLocation метод через 60 секунд.Тогда внутри твоего timeToRestartCoreLocation метод, вызов [locationManager startUpdatingLocation] чтобы снова запустить CoreLocation.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top