应用在更改权限时后台崩溃 - Swift

23

我需要通过UIAlertController提示用户更改我的应用程序的相机权限。 警报具有以下操作:

alert.addAction(UIAlertAction(title: "Open Settings", style: .default, handler: { (action) -> Void in

    guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
        return
    }

    if UIApplication.shared.canOpenURL(settingsUrl) {
        DispatchQueue.main.async(execute: {
            UIApplication.shared.openURL(settingsUrl)
        })
    }
}))

这在打开设置方面确实有效,但如果用户更改了相机权限,应用程序将在后台崩溃,显示来自调试器的消息:由于信号9终止

现在他们可以打开应用程序并且权限是正确的,但是他们需要从头开始。有人知道如何解决这个问题吗?


这发生在设备上吗? - KKRocks
https://dev59.com/AV8e5IYBdhLWcg3wEXJi - LC 웃
@KKRocks 是在实际设备上运行的,是的。 - James
@ThatlazyiOSGuy웃 那个链接中的顶部回复似乎表明这是预期行为。你知道这是真的吗? - James
@James 是的...这是默认行为。如果你想恢复你的应用状态,请按照答案进行操作。 - LC 웃
1个回答

69

您的应用程序并没有崩溃,而是被iOS强制使用新的隐私设置重新启动。因此,当您更改相机权限时,这意味着隐私策略已更改,因此,如果该应用程序连接到调试器,则将被终止,否则它将重新启动。

此外,不仅相机权限,如果用户在某个时间点更改了通讯录、日历、提醒事项、相机或照片权限,则iOS会SIGKILL该应用程序。(这是iOS的默认行为)


这似乎就是它。感谢您提供的信息。 - James
当我打开相机设置时,我只是添加了 exit(0)。它正常工作。 - HariKarthick
当使用连接到Xcode系统的侧载时:1- 应用程序会重新启动 2- 调试器中记录了信号9 3- Xcode被断开连接(我假设是因为设备重新启动了进程) - benc
4
@Jaydeep,你有关于这种行为的“官方”文档链接吗?谢谢!:) - Paul Aigueperse
1
@PaulAigueperse,是的,它在官方网站上可用。请查看第24页https://download.developer.apple.com/wwdc_2012/wwdc_2012_session_pdfs/session_710__privacy_support_in_ios_and_os_x.pdf - seggy

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