如何在访问权限后刷新权限

时间:2017-02-16 10:01:26

标签: ios swift permissions

我需要访问用户照片,为此我请求许可。有可能的结果:

  1. 授予权限:在此条件下,应用程序恢复正常运行。
  2. 权限被拒绝:在这种情况下,应用程序会显示一个警报,其中用户可以选择goToSettings或忽略它。如果用户选择goToSettings并提供对照片的访问权并返回应用程序,那么它仍然表示未授予权限。只有在重新启动应用程序时才会刷新权限。
  3. 我的问题:如何在不重新启动应用程序的情况下刷新应用程序的权限设置。与我的问题类似的问题已发布here.

    修改

    我的应用程序是基于导航控制器的应用程序,我在我的控制器viewDidLoad中检查访问权限。如果我弹出并再次推动控制器,我只是尝试刷新请求权限。没有运气,结果相同 - 它仍然表示许可被拒绝。

    修改2:检查权限的代码

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

3 个答案:

答案 0 :(得分:3)

iOS更改隐私设置后会杀死您的应用。下次点击应用程序图标后,您的应用程序将从头开始。 application:didFinishLaunching被调用,依此类推。所以你不需要更新权限。

答案 1 :(得分:0)

在您的AppDelegate中,您可以在applicationDidBecomeActive中使用逻辑来重新查询权限存储以获取更新的权限。

在视图的viewDidLoad中,您检查权限,可以像这样观察通知;

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

答案 2 :(得分: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

}