Я могу, по крайней мере, подтвердить «заблокированные менеджеры местоположений», хотя и в несколько ином контексте:
По моему опыту, если вы создадите два менеджера местоположений с разными настройками точности, запустите обновления для обоих, а затем только остановитеобновления для одного с более высоким требованием точности, тогда другое больше не получает никаких обновлений.
Вы, очевидно, используете только одного менеджера, но способ, которым ваш менеджер застревает, кажется, тот же: В случаеКак описано выше, обновления также могут быть перезапущены с помощью приложения карты (или любого другого аналогичного средства).
Мой обходной путь заключается в следующем: всякий раз, когда я останавливаю одного менеджера, я также сбрасываю фильтры расстояния всех остальных (хранящихся вNSSet
называется myCLLocationManagers
), как показано ниже:
CLLocationManager * lm;
CLLocationDistance tmp;
for (lm in myCLLocationManagers){
tmp=lm.distanceFilter;
lm.distanceFilter=kCLDistanceFilterNone;
lm.distanceFilter=tmp;
}
Кажется, это работает более надежно, чем мой предыдущий глобус (который должен был останавливать и перезапускать менеджеры).
Примечаниечто kCLLocationAccuracyBestForNavigation
и kCLLocationAccuracyBest
являются (в настоящее время) отрицательными значениями, и что в целом вы не должны полагаться на указанныеc значения всех этих констант - нет гарантии, что kCLLocationAccuracyHundredMeters==100
(хотя в настоящее время верно).Я упоминаю об этом только потому, что кажется, что вы напрямую сравниваете переменную «точность» в метрах с этими константами.