requestAccessForMediaType 不请求许可
requestAccessForMediaType doesn't ask for permission
我注意到我的应用未请求使用相机的权限。经过一些实验后,我发现用于检查权限的代码需要很长时间才能完成。所以我想到让我的 viewdidload 运行 的那部分放在串行队列(同步)上。强制其余部分在开始下一行之前等待身份验证过程完成。但这实际上行不通。这些行按顺序开始,但仍然没有按顺序结束。
奇怪的是,如果我只是请求许可而不对它做任何事情,没有 completionHandler(如下面的代码),那么他第二次 运行 我 运行 它用completionHandler 完美,尽管它仍然没有向用户显示警报。这可能是因为在欧洲录制视频不需要许可吗? avcapturedevice ref
如果我想逐行执行代码,是否需要使用屏障?或同步串行队列的或??
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { nil }())
更新:
这种方法应该是非常安全的,但事实并非如此。它 returns true 是理所当然的,但 3 为 rawValue (denied)
func checkForAuthorizationStatus() {
println("auth me")
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: {
granted in
if granted {
println("granted: \(granted)")
self.deviceAuthorized = true
println("raw value: \(AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo).rawValue)")
} else {
self.deviceAuthorized = false
}
})
}
更新 2:在下面的评论中回答。
- 重置设备上的隐私设置以获取请求。
- 授权的原始值是 3 而不是 4
如果它要花很长时间才能出现,那么听起来您似乎没有 运行 在主线程上,而您应该在主线程上。此外,如果它之前提示过一次,则不会再次提示 – 用户必须进入“设置”并启用相机访问权限。
我注意到我的应用未请求使用相机的权限。经过一些实验后,我发现用于检查权限的代码需要很长时间才能完成。所以我想到让我的 viewdidload 运行 的那部分放在串行队列(同步)上。强制其余部分在开始下一行之前等待身份验证过程完成。但这实际上行不通。这些行按顺序开始,但仍然没有按顺序结束。
奇怪的是,如果我只是请求许可而不对它做任何事情,没有 completionHandler(如下面的代码),那么他第二次 运行 我 运行 它用completionHandler 完美,尽管它仍然没有向用户显示警报。这可能是因为在欧洲录制视频不需要许可吗? avcapturedevice ref
如果我想逐行执行代码,是否需要使用屏障?或同步串行队列的或??
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { nil }())
更新:
这种方法应该是非常安全的,但事实并非如此。它 returns true 是理所当然的,但 3 为 rawValue (denied)
func checkForAuthorizationStatus() {
println("auth me")
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: {
granted in
if granted {
println("granted: \(granted)")
self.deviceAuthorized = true
println("raw value: \(AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo).rawValue)")
} else {
self.deviceAuthorized = false
}
})
}
更新 2:在下面的评论中回答。 - 重置设备上的隐私设置以获取请求。
- 授权的原始值是 3 而不是 4
如果它要花很长时间才能出现,那么听起来您似乎没有 运行 在主线程上,而您应该在主线程上。此外,如果它之前提示过一次,则不会再次提示 – 用户必须进入“设置”并启用相机访问权限。