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

5
如果用户在开始时未允许访问照片库,则我将提示弹出窗口,其中包括“取消”和“设置”可供选择。如果用户选择设置,则会带他到设置页面,在那里他可以为应用程序启用相机和照片库。然而,一旦用户在设置中切换相机或照片库开关,我的应用程序就会崩溃,并输出“来自调试器的消息:由于信号9终止”。下面是我的弹窗的代码。
    @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)
}

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

你的 PHPhotoLibrary.authorizationStatus() 方法是如何实现的? - dudeman
我刚刚测试了一下。我的设备连接到Xcode后,当我的应用启用了照片访问权限时,我按Home键进入设置,并在设置中为我的应用切换了照片访问权限。当我切换完毕后,就会在AppDelegate类中显示崩溃信息,线程1:信号SIGKILL。 - user172902
听起来可能是操作系统的行为,你无法阻止它。 - dudeman
1
看起来 Instagram 也被干掉了。 - dudeman
实际上你是正确的。 - user172902
显示剩余5条评论
1个回答

5

苹果的文档如下所述:

  • 如果权限更改,应用程序将退出。
  • 如果已注册,将调用后台任务到期处理程序。
  • iOS然后终止应用程序。

到目前为止,还没有看到解决这个问题的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接