我需要提示用户通过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)
})
}
}))
Run Code Online (Sandbox Code Playgroud)
这在打开设置时确实有效,但如果用户更改了相机权限,则应用程序会在后台崩溃Message from debugger: Terminated due to signal 9
.
他们现在可以打开应用程序并且权限是正确的,但是他们需要从头开始.有谁知道如何解决这个问题?
使用AVCaptureSession记录条形码,效果很好.我也遵循堆栈溢出的建议(如何正确释放AVCaptureSession)
[_session stopRunning];
[_prevLayer removeFromSuperlayer];
_prevLayer = nil;
_session = nil;
Run Code Online (Sandbox Code Playgroud)
在ViewWillDisappear中,希望它能正确释放CaptureSession.(SO中的其他答案指的是ARC之前的时间)
但是,当我切换应用程序的相机隐私设置(例如从启用到禁用,反之亦然)时,应用程序崩溃.这是一个问题,因为最初未启用Camera的用户无法在不崩溃的情况下追溯执行此操作.我还需要做些什么来防止这种情况发生吗?
非常感谢!