#objective-c #ios #cocoa-touch #core-location
#цель-c #iOS #cocoa-touch #ядро-местоположение
Вопрос:
Я делаю это руководство, которое возвращает координаты GPS. Когда я запускаю приложение на iPhone, мне сначала предлагается UIAlertView
запросить разрешение на доступ к моим координатам GPS.
Мне нужно знать, откуда это UIAlertView
выбрасывается? Это из ОС? Можем ли мы использовать этот метод? Когда пользователь нажимает «Разрешить» или «Не разрешать», могу ли я распечатать его выбор на консоли?
Как я могу сделать это программно? Есть ли событие для этого?
Ответ №1:
Это предупреждение отображается операционной системой. Использование API на основе местоположения должно быть разрешено пользователем. Вы можете запросить CLLocationManager
текущее authorizationStatus
и получать уведомления об изменении статуса (будет вызван метод делегирования). Обратите внимание, что пользователь также может отключить службы определения местоположения позже в приложении «Настройки».
Комментарии:
1. Хорошо, например, скажем, что пользователь нажимает
No
или не разрешает разрешение на доступ к местоположению GPS. но позже пользователь передумал, и ему требуется авторизовать разрешение на доступ к GPS. В таком случае, как мнеUIAlertview
снова вызвать?2. @sharon — Ты этого не делаешь. Вы не вызывали его в первый раз. Вы можете следить за изменениями в вашей авторизации, поэтому вы можете отказаться от функций определения местоположения, если хотите. Но вы не можете снова запросить у пользователя разрешение. Конечно, если вы заметите, что у вас нет разрешения, вы всегда можете запустить СОБСТВЕННОЕ оповещение об этом. Но им придется копаться в своих настройках, чтобы включить ваши разрешения, вы не можете отправить их туда напрямую.
3. Начиная с iOS5, вы можете создать свою собственную кнопку «Настройки» и вызвать ее: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@»prefs:root= General»]]; чтобы включить прямой доступ к настройкам.
4. предложение @ paiego — похоже, что способ iOS 8 сделать это:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Ответ №2:
Я предполагаю, что вы используете CLLocationManager. Ваш делегат получит LocationManager:didChangeAuthorizationStatus при изменении способности приложений использовать API.
Редактировать: при первой попытке вашего приложения использовать службу пользователю будет предложено. Если пользователь ответит «Нет», ваше приложение не сможет использовать службу, если они не перейдут в Настройки-> Общие-> Службы определения местоположения и не изменят настройки для вашего приложения.
Если вы запрашиваете у API статус и вам отказано, вы можете создать собственное всплывающее окно и проинструктировать пользователя о том, как изменить настройки для вашего приложения.
Комментарии:
1. Хорошо, например, скажем, что пользователь нажимает
No
или не разрешает разрешение на доступ к местоположению GPS. но позже пользователь передумал, и ему требуется авторизовать разрешение на доступ к GPS. В таком случае, как мнеUIAlertview
снова вызвать?2. Я полагаю, что пользователю придется перейти на экран настроек iPhone и изменить выбранный параметр для вашего приложения.