Каковы правила, по которым "X хотел бы использовать ваше текущее местоположение" на iPhone?

Использование определения местоположения на iPhone запускает "X хочет использовать ваше текущее местоположение" - "Не разрешать" / "ОК". В документации CLLocationManager указано:

"Пользователь имеет возможность запретить приложениям доступ к данным службы местоположения. Во время первоначального использования приложения базовая структура ядра предлагает пользователю подтвердить, что использование службы определения местоположения является приемлемым. Если пользователь отрицает запрос, объект CLLocationManager сообщает о соответствующей ошибке его делегату во время будущих запросов.

Я обнаружил, что "начальное использование" будет два раза, если вы нажмете "ОК", чтобы разрешить услуги определения местоположения. С третьего раза iPhone запомнит ваши настройки для всех будущих применений приложения.

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

Мои вопросы:

  • Для всех приложений iPhone попросит два раза и запомнит настройку, если вы нажмете "ОК". Правильное ли это наблюдение?
  • Есть ли ограничение на количество попыток iPhone будет продолжать спрашивать, попадаете ли вы "Не разрешать" , или это никогда не помнится? Как вы справляетесь с этим? Поскольку locationManager: didFailWithError: уведомлен, я думаю, он может каждый раз увеличивать свойство счетчика и упорствовать в этом. При следующем использовании приложения этот параметр проверяется в моем собственном коде. Если counter >= 2, не используйте расположение ядра.
  • Единственный способ, который я обнаружил, чтобы удалить параметр "ОК", как только его помнят, - это сбросить его для ВСЕХ приложений в целом → Reset → Предупреждения о местоположении. Есть ли способ сделать это только для одного приложения или из моего собственного кода?

Ответы

Ответ 1

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

  • Я нашел следующее в примере LocateMe:

    "Не разрешать" в двух последующих запусках приложений - это то же самое, что сказать "никогда не разрешать". но я также читал, что другие люди видят то же поведение, что и вы. Может быть, изменение в недавнем обновлении ОС? В любом случае, ваш подход звучит разумно.

  • Я не верю, что вы можете reset только для одного приложения, извините.

Ответ 2

Теперь вы можете установить или отключить одно приложение в настройках в разделе Общие, службы определения местоположения. Возможно, введен в 4.0?

И если вы являетесь зарегистрированным разработчиком, вы можете проверить различия API для последней беты. Возможно, они улучшили обработку ошибок.