1

Наше действующее приложение, которое мы разрабатываем, требует текущего местоположения пользователя и Bluetooth для маяка. И мы хотели бы попросить у пользователя разрешения использовать GPS и Bluetooth (отдельно). Мы планируем запрашивать разрешение пользователя каждый раз, когда он активирует функцию на странице настроек нашего приложения. Есть ли способ сделать это?IOS - Как спросить пользователей о разрешениях?

До сих пор я нашел эту ссылку: I want to trigger iOS7 to ask users permission to use Bluetooth and Twitter account

Но это только попросить пользователя один раз в течение жизни приложения.

PS: Мы также новы к объективному c-c подробному объяснению было бы высоко оценено.

Спасибо заранее!

+2

На самом деле вы никому не требуете разрешения пользователей, это код Apple, который запрашивает разрешение. Единственный способ заставить его задавать несколько раз - это если пользователь переходит к настройкам и отключает их, и даже тогда я не уверен, будет ли он повторять их снова. – Popeye

+0

Эта ссылка будет вам полезна http://techcrunch.com/2014/04/04/the-right-way-to-ask-users-for-ios-permissions/ – rptwsthi

+0

Приложение @Popeye спросит еще раз, если пользователь отключил Bluetooth от настроек. Пользователь хочет включить Bluetooth или нет? – Arpit

ответ

2

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

По умолчанию диалоги Apple запускаются один раз (или два раза в iOS8) при первом запросе доступа к API-интерфейсам местоположения. Чтобы иметь IOS просить разрешения вам нужно сделать несколько вещей (в iOS8):

добавить NSLocationAlwaysUsageDescription или requestWhenInUseAuthorization к вашему info.plist эти клавиши держать строку, которая использует IOS I диалог он представляет, когда вы преформ Следующий шаг:

отправить requestAlwaysAuthorization или requestWhenInUseAuthorization в экземпляр CLLocationManager. то есть

CLLocationManager* myLocationManager = [[CLLocationManager alloc] init]; 
[myLocationManager requestAlwaysAuthorization]; 

В этот момент iOS отобразит диалоговые окна, с которыми вы знакомы. iOS8 также отобразит другое диалоговое окно, чтобы подтвердить это через некоторое время после первоначального разрешения (около двух дней). Он не будет спрашивать многократно.

если вы хотите построить свой собственный диалог, вы должны сделать это:

UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Use bluetooth" 
                    message:@"is it ok for this app to use Bluetooth" 
                  preferredStyle:UIAlertControllerStyleAlert]; 
    UIAlertAction* yesButton = [UIAlertAction actionWithTitle:@"Yes" 
                 style:UIAlertActionStyleDefault 
                 handler:^(UIAlertAction *action) { 
                  // This code runs when the user presses YES. 
                  // You should also add code to handle a NO button. 
                 }]; 
    [alert addAction:yesButton]; 

Затем нужно отобразить предупреждение. Возможно использование presentViewController::

0

Есть определенные способы, как все приложения обрабатывают такое разрешение.

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

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

Примечание. Уведомление о разрешении Bluetooth, с которым вы связаны, может быть полезно.Конечно, вы не должны внедрять предупреждение в конце кода примера, это только для того, чтобы продемонстрировать, что код работает.

Смежные вопросы