Что определяет наличие значка служб определения местоположения iPhone в строке состояния?

Вот моя ситуация. Я разрабатываю приложение для iPhone, которое использует Core Location для определения местоположения устройства. В строке состояния устройства отображается значок: значок служб определения местоположения. Я знаю достаточно, чтобы сказать, что цель значка - сообщить пользователю, что службы геолокации в настоящее время чем-то используются. Для восприимчивого пользователя это означает сокращение срока службы батареи. По этой причине, Я хочу быть уверенным, что значок будет отображаться только тогда, когда мое приложение действительно использует службы определения местоположения.

Введите путаницу. Мы, как разработчики, не получаем доступа к строке состояния через официальный SDK. Это означает, что ОС будет отображать этот значок автоматически в зависимости от поведения приложения. Как бы я ни старался, я не могу найти четкого определения того, что именно вызывает появление этого значка.

В его нынешнем виде значок появляется до того, как делегат моего приложения получает управление, и остается видимым, пока приложение установлено, запущено или не. Это явно наихудший случай из возможных, и это заставило меня усомниться в том, что я использую CLLocationManager . Я хотел бы подробнее рассказать о своем использовании, но в крайнем случае я попытался удалить структуру CoreLocation (и структуру MapKit, которая, как я подозреваю, также использует CoreLocation), и весь код, связанный с местоположением. Приложение по-прежнему заставляло значок появляться и оставаться, пока я не удалил приложение. Затем я создал совершенно новое приложение и не внес никаких изменений, кроме изменения идентификатора приложения в соответствии с идентификатором моего приложения. Иконка все же появилась. Я изменил идентификатор, чтобы использовать идентификатор одного из моих приложений, которое не использовало местоположение, и значок не отображался. Я действительно перезагрузил устройство во время этого тестирования.

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

15
задан Matt Wilding 10 December 2010 в 22:42
поделиться