Как обнаружить GPS в / на iPhone xcode и как мы можем узнать, что наше приложение не разрешено использовать GPS? - PullRequest
4 голосов
/ 28 июля 2011

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

пользователь выбирает не разрешать, и тогда как мы можем узнать, что пользователь не позволяет нашему приложению получить доступ к своему GPS, чтобы узнать свое местоположение? потому что моему приложению требуется CurrentLocation, поэтому, если я могу определить, какого пользователя выбрать, я хочу создать всплывающее окно, подобное первому всплывающему окну, которое снова запрашивает разрешение.

или любой код, который может включить / выключить GPS моим приложением?

Представь, если пользователь не допустит по ошибке? Есть ли в моем приложении возможность повторно запросить пользователя?

Что должно делать приложение типа Yelp, когда местоположение недоступно?

Ответы [ 2 ]

8 голосов
/ 28 июля 2011

Начиная с iOS 4.2, класс, в котором вы реализуете методы CLLocationManagerDelegate (например, -locationManager:didUpdateToLocation:fromLocation:), должен также реализовывать -locationManager:didChangeAuthorizationStatus:. Этот метод получит четыре статуса. чтобы проверить, не может ли ваше приложение использовать службы определения местоположения, найдите kCLAuthorizationStatusRestricted - когда пользователь не может разрешить доступ к службам определения местоположения - и kCLAuthorizationStatusDenied - когда пользователь явно отказал вашему приложению в доступе к службам определения местоположения. В обоих случаях целесообразно проинформировать пользователя (через представление предупреждений или чего-либо еще), что ваше приложение полагается на возможность доступа к его местоположению и что они могут повторно предоставить ему доступ в приложении «Настройки». , Вы также можете проверить статус авторизации вашего приложения в любое время, используя метод класса CLLocationManager +authorizationStatus.

До 4.2, к сожалению, ничего из этого не доступно, и вам нужно будет использовать метод +locationServicesEnabled, о котором упоминает ответ sosbom.

4 голосов
/ 28 июля 2011

Читать это: Программирование определения местоположения

Ключевая строка такова:

Определение доступности служб определения местоположения Каждое устройство на базе iOS способноподдержка служб определения местоположения в некоторой форме, но все еще существуют ситуации, когда службы определения местоположения могут быть недоступны:

Пользователь может отключить службы определения местоположения в приложении «Настройки».Пользователь может отказать в услугах определения местоположения для определенного приложения.Возможно, устройство находится в режиме полета и не может включить необходимое оборудование.По этим причинам рекомендуется всегда вызывать метод класса locationServicesEnabled класса CLLocationManager, прежде чем пытаться запустить стандартные службы определения местоположения или службы определения существенных изменений.(В iOS 3.x и более ранних версиях проверьте значение свойства locationServicesEnabled.) Если этот метод класса возвращает YES, вы можете запускать службы определения местоположения, как и планировалось.Если он возвращает NO, и вы все равно пытаетесь запустить службы определения местоположения, система предлагает пользователю подтвердить, следует ли снова включить службы определения местоположения.Учитывая, что службы определения местоположения с большой вероятностью могут быть намеренно отключены, пользователь может не приветствовать это приглашение.

...