2017-02-16 2 views
1

Мне нужно обратиться к пользователям Фотографии, для этого я прошу разрешения. Возможные исходы:Как обновить разрешение после доступа к нему

  1. Разрешение: В этом состоянии приложение возобновляет его нормальное функционирование.
  2. Разрешение отклонено: в этом случае приложение показывает предупреждение, в котором пользователь имеет возможность goToSettings или просто игнорировать его. Если пользователь выбирает goToSettings и предоставляет доступ к фотографиям и возвращается в приложение, он все еще говорит, что разрешение не предоставляется. Разрешения обновляются только при перезагрузке приложения.

Мой вопрос: Как обновить настройки разрешений приложения без перезагрузки моего приложения. Аналогичная проблема на мой вопрос размещена here.

Edit:

Моего приложения является навигационным контроллером приложением и проверить наличие доступа в моем диспетчерском viewDidLoad. Я просто попробовал, если разрешения запроса обновлены, если я поплю и снова нажмите контроллер. Не повезло, результаты там же - он все еще сказал, что разрешение отклонено.

Edit 2: Код для проверки разрешений

func requestAccess() -> Void { 
    PHPhotoLibrary.requestAuthorization { 
     status in 
     switch(status) { 
     case .notDetermined, .denied : 
      // perform relavent action 
      break 

     case .authorized , .restricted : 
      // perform relavent action 
      break 
     } 
    } 
} 
+0

Какие настройки вы меняете в настройках iOS? Если вы перейдете в «Конфиденциальность» -> «Фотографии» -> «YourApp» и измените значение, приложение iOS 10 перезагружается iOS автоматически –

+0

@ pilot3 В настройках я предоставляю доступ к приложениям для фотографий. Я не понимаю, что вы имеете в виду при перезагрузке приложений iOS 10 автоматически. – Priyal

+0

Я попробовал это в ios 10.2 и 9.3. – Priyal

ответ

1

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

+0

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

0

В вашем AppDelegate вы могли бы иметь логику в applicationDidBecomeActive, чтобы повторно запрашивать хранилище разрешений для обновленных разрешений.

В вашем представленииDidLoad для просмотра, на который вы проверяете разрешения, вы можете наблюдать за этим уведомлением;

NSNotificationCenter.defaultCenter().addObserver(
     self, 
     selector: #selector(yourClass.applicationDidBecomeActive(_:)), 
     name: UIApplicationDidBecomeActiveNotification, 
     object: nil) 
+0

Пробовал. Не работает. – Priyal

0

Код, указанный ниже, является Objective-C.

Я думаю, что вы можете сделать это, когда пользователь, нажав на кнопку или что-то:

PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus]; 


if (status == PHAuthorizationStatusNotDetermined) { 
     // ask for authorization 
     [PHPhotoLibrary requestAuthorization... 

} else if (status == PHAuthorizationStatusAuthorized) { 
     // continue accessing photos 

} else { 
     // access denied, go to settings if you want 

} 
+0

Я знаю, что могу получить статус с помощью этого кода, но это не проблема. Пожалуйста, внимательно прочитайте вопрос перед ответом. – Priyal

+0

@Priyal Я могу сказать вам, что он не нуждается в обновлении. После изменения настроек и возврата к приложению фотографии будут доступны. Поэтому я думаю, что что-то не так. – Sugar

+0

Я могу получить статус, когда отображается всплывающее окно запроса. То, что я пытаюсь сделать, - это если пользователь отказывается от разрешения, тогда я показываю предупреждение, запрашивающее возможность доступа через настройки. У этого есть кнопка действия, через которую пользователь может быть перенаправлен на настройки. Когда пользователь предоставляет доступ к приложению через это, то также когда пользователь возвращается к приложению, он не отражается. Это отражается только при перезапуске приложения. – Priyal

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