正确处理IOS设置更改的方法

时间:2016-09-01 10:35:03

标签: ios objective-c swift phphotolibrary

如果用户在开始时不允许访问相册,我会弹出“取消”和“设置”进行选择。如果他选择设置,它会将他带到设置页面,在那里他可以为应用程序启用相机和照片库。但是,一旦用户在设置中切换相机或照片库开关,我的应用程序就会崩溃,并且#34;来自调试器的消息:由于信号9和#34而终止。打印。以下是我的弹出窗口的代码

    @IBAction func cameraBarBtnPress(sender: AnyObject) {

    let photoAuthStatus = PHPhotoLibrary.authorizationStatus()

    switch photoAuthStatus {

    case .Authorized:
        presentFusumaCameraVC()

    case .Denied, .Restricted :

        showNeedPhotoAlbumAccessPopup()

    case .NotDetermined:
        PHPhotoLibrary.requestAuthorization({ (authStatus: PHAuthorizationStatus) in
            switch authStatus {
            case .Authorized:
                self.presentFusumaCameraVC()

            case .Denied, .Restricted :
                self.showNeedPhotoAlbumAccessPopup()

            case .NotDetermined:
                print("Shouldnt get to here")
            }
        })
    }
}

func showNeedPhotoAlbumAccessPopup() {
    let alertController = UIAlertController(title: "Enable Photo Album Access", message: "", preferredStyle: .Alert)
    let cancelAction = UIAlertAction(title: "Cancel", style: .Default, handler: nil)
    let settingsAction = UIAlertAction(title: "Settings", style: .Default, handler: { (action: UIAlertAction) in
        let settingsUrl = NSURL(string: UIApplicationOpenSettingsURLString)
        if let url = settingsUrl {
            UIApplication.sharedApplication().openURL(url)
        }
    })
    alertController.addAction(settingsAction)
    alertController.addAction(cancelAction)
    self.presentViewController(alertController, animated: true, completion: nil)
}

处理此问题的正确方法是什么,以便用户可以在切换开关后返回应用并开始选择照片?

1 个答案:

答案 0 :(得分:4)

Apple's documentation说以下内容:

  
      
  • 如果权限更改,应用已退出
  •   
  • 调用后台任务到期处理程序(如果已注册)
  •   
  • iOS然后杀死该应用程序
  •   

到目前为止还没有找到方法。