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