当我的应用程序第一次尝试在iOS 8上访问摄像头时,会向用户显示摄像头权限对话框,非常类似于iOS 7中用于麦克风访问的麦克风 .
在iOS 7中,可以预先调用麦克风权限对话框,并查看是否已授予权限(例如,请参阅this question) . 是否有类似的方法来调用iOS 8中的相机权限对话框?可以将对话组合用于麦克风和摄像机访问权限吗?
当我的应用程序第一次尝试在iOS 8上访问摄像头时,会向用户显示摄像头权限对话框,非常类似于iOS 7中用于麦克风访问的麦克风 .
在iOS 7中,可以预先调用麦克风权限对话框,并查看是否已授予权限(例如,请参阅this question) . 是否有类似的方法来调用iOS 8中的相机权限对话框?可以将对话组合用于麦克风和摄像机访问权限吗?
9 回答
对我来说问题是由于最近的一些构建配置更改,
Bundle name
和Bundle Display Name
未在我的Info.plist中设置 . 这是一个不太可能的案例......但是我花了几个小时来解决这个问题 . 希望它对其他人有帮助 .这是我的Swift解决方案(iOS 8),我需要相机进行QR扫描,所以必须提示它的使用 .
This provides
鼓励用户在默认允许摄像机访问问题之前选择允许
如果用户拒绝第一个请求,则可以轻松访问设置 .
为了让它运行,请在ViewDidAppear /或ViewDidLoad等中调用相机 . 我需要使用viewDidAppear,以便设置我的自定义相机视图约束 .
感谢上面的jamix用于使用dispatch_async的提示 - 使响应显示新设置的相机功能更快 .
对不起混合的尾随封闭..想试试看 .
导入AVFoundation
Note: 添加隐私 - 您的Info.plist上的相机使用说明键
// MARK:相机处理
我对应用代表进行了访问检查 .
以下是我们最终使用的方法:
没有任何答案似乎检查麦克风和相机权限 . 我们的代码会检查授予摄像机权限但麦克风访问被拒绝的情况 .
因为我们不太可能是粗糙的嵌套闭包和
if
语句是最佳的 . 请分享改进代码的建议!但至少它在测试中起作用 .对我来说,iOS7和iOS8上的这项工作:
对于Swift 3,您可以在第一个视图控制器的
viewWillAppear
方法上添加它:首先导入
AVFoundation
框架然后:
别忘了在
Info.plist
上添加Privacy - Camera Usage Description
键我遇到了类似的问题,如果用户在第一次提示时拒绝了相机访问,按下按钮可以在相机模式下拍摄黑屏 .
但是,我想检测用户拒绝访问并提示他们必须打开但我找不到任何功能来检查当前用户的摄像头访问,是否有这样的功能?
编辑:以下检查将在IOS 8中通知您关于相机访问:
此信息可在以下问题中找到(How to know that application have camera access or not programmatically in iOS8):