Вот моя ситуация. Я разрабатываю приложение iPhone, использующее Core Location для определения местоположения устройства. Существует значок: значок службы местоположения, который отображается в строке состояния устройства. Я знаю достаточно, чтобы сказать, что цель значка - сообщить пользователю, что службы местоположения в настоящее время используются чем-то. Для проницательного пользователя это означает сокращение времени автономной работы. По этой причине я хочу быть уверенным, что значок отображается только тогда, когда службы местоположения фактически используются моим приложением.
Введите путаницу. Мы, как разработчики, не получаем доступ к строке статуса через официальный SDK. Это означает, что ОС отобразит этот значок автоматически в зависимости от поведения приложения. Попытайтесь, как я мог, я не могу найти четкое определение того, что именно заставляет этот значок отображаться.
Как он есть, значок появляется до того, как мой делегат приложения получит контроль и останется видимым, пока приложение установлено, работает или нет. Это, безусловно, наихудший вариант, и это заставило меня сомневаться в моем использовании CLLocationManager
. Я хотел бы подробно остановиться на моем использовании, но в качестве крайнего случая я попытался удалить среду CoreLocation (и структуру MapKit, которая, как я подозреваю, также использует CoreLocation), и весь код, относящийся к местоположению. Приложение по-прежнему вызывало появление значка и осталось до тех пор, пока я не удалю приложение. Затем я сделал совершенно новое приложение и не внес никаких изменений, кроме как изменить идентификатор приложения, чтобы он соответствовал идентификатору моего приложения. Икона все еще появилась. Я изменил идентификатор, чтобы использовать идентификатор одного из моих приложений, которые не использовали местоположение, и значок не отображался. Во время этого тестирования я убедился в reset устройстве.
Эта проблема действительно убивает меня. Я не могу себе представить, какой идентификатор приложения имеет отношение к значку служб местоположения, но я не вижу другой причины для его сохранения. Кажется, что Red Herring скрывает реальную проблему, но я в недоумении относительно реальной проблемы.