swift ios 9 个应用不在“设置”中
swift ios 9 app not in Settings
我有 swift 在 ios 8 和 xcode 6 上工作的相机代码。
我调用了 AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) 但我的应用程序没有出现在 Settings -> privacy -> Camera
(但其他应用程序出现)
更新到ios 9 和xcode 7 后无法获取相机权限工作。
我在 google 和 Whosebug 上搜索了 2 天。
问题
我导入了 AVFoundation 并调用 AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) 总是得到 AVAuthorizationStatus.Denied
- 我的应用程序没有出现在设置 -> 隐私 -> 相机中
- 相机是黑色的
- requestAccessForMediaType 不打开弹出窗口[=52=]
- authorizationStatusForMediaType 始终被拒绝
主要问题是第一个问题。我想如果我可以在设置 -> 隐私 -> 相机上获取我的应用程序,那么其他问题就解决了。
我试过的东西
- UIImagePickerController
的子 class
- 删除并重新安装我的应用程序
- 已更改捆绑包 ID
- 已将 iphone 日期更改为未来 3 天
- 在主线程中调用了 requestAccessForMediaType
- Xcode 7
- ios 9.0 9.1
- iphone 5, 5s, 6
- swift2.1
我的代码
override func viewDidLoad() {
super.viewDidLoad()
cameraView()
}
func checkCamera() {
let authStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
switch authStatus {
case AVAuthorizationStatus.Authorized:
print("AVAuthorizationStatus.Authorized")
case AVAuthorizationStatus.Denied:
print("AVAuthorizationStatus.Denied")
case AVAuthorizationStatus.NotDetermined:
print("AVAuthorizationStatus.NotDetermined")
case AVAuthorizationStatus.Restricted:
print("AVAuthorizationStatus.Restricted")
default:
print("AVAuthorizationStatus.Default")
}
}
func cameraView(){
// session
let mySession : AVCaptureSession = AVCaptureSession()
var myDevice : AVCaptureDevice? //= AVCaptureDevice()
let myImageOutput : AVCaptureStillImageOutput = AVCaptureStillImageOutput()
let devices = AVCaptureDevice.devices()
let audioCaptureDevice = AVCaptureDevice.devicesWithMediaType(AVMediaTypeAudio)
let audioInput = (try! AVCaptureDeviceInput(device: audioCaptureDevice[0] as! AVCaptureDevice)) as AVCaptureInput
for device in devices {
if(device.position == AVCaptureDevicePosition.Back){
myDevice = device as? AVCaptureDevice
}
}
let status = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
print(status == AVAuthorizationStatus.Authorized)
print(status == AVAuthorizationStatus.Denied)
print(status == AVAuthorizationStatus.Restricted)
print(status.rawValue)
if status != AVAuthorizationStatus.Authorized {
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted :Bool) -> Void in
if granted == false {
// Camera not Authorized
dispatch_async(dispatch_get_main_queue()) {
print("Camera not Authorized")
self.checkCamera()
return
}
}
});
}
您需要设置一对新的 Info.plist 值,与位置服务的字符串相同 iOS8:
只需为它们设置描述字符串即可。
我有 swift 在 ios 8 和 xcode 6 上工作的相机代码。
我调用了 AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) 但我的应用程序没有出现在 Settings -> privacy -> Camera
(但其他应用程序出现)
更新到ios 9 和xcode 7 后无法获取相机权限工作。 我在 google 和 Whosebug 上搜索了 2 天。
问题
我导入了 AVFoundation 并调用 AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) 总是得到 AVAuthorizationStatus.Denied
- 我的应用程序没有出现在设置 -> 隐私 -> 相机中
- 相机是黑色的
- requestAccessForMediaType 不打开弹出窗口[=52=]
- authorizationStatusForMediaType 始终被拒绝
主要问题是第一个问题。我想如果我可以在设置 -> 隐私 -> 相机上获取我的应用程序,那么其他问题就解决了。
我试过的东西
- UIImagePickerController 的子 class
- 删除并重新安装我的应用程序
- 已更改捆绑包 ID
- 已将 iphone 日期更改为未来 3 天
- 在主线程中调用了 requestAccessForMediaType
- Xcode 7
- ios 9.0 9.1
- iphone 5, 5s, 6
- swift2.1
我的代码
override func viewDidLoad() {
super.viewDidLoad()
cameraView()
}
func checkCamera() {
let authStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
switch authStatus {
case AVAuthorizationStatus.Authorized:
print("AVAuthorizationStatus.Authorized")
case AVAuthorizationStatus.Denied:
print("AVAuthorizationStatus.Denied")
case AVAuthorizationStatus.NotDetermined:
print("AVAuthorizationStatus.NotDetermined")
case AVAuthorizationStatus.Restricted:
print("AVAuthorizationStatus.Restricted")
default:
print("AVAuthorizationStatus.Default")
}
}
func cameraView(){
// session
let mySession : AVCaptureSession = AVCaptureSession()
var myDevice : AVCaptureDevice? //= AVCaptureDevice()
let myImageOutput : AVCaptureStillImageOutput = AVCaptureStillImageOutput()
let devices = AVCaptureDevice.devices()
let audioCaptureDevice = AVCaptureDevice.devicesWithMediaType(AVMediaTypeAudio)
let audioInput = (try! AVCaptureDeviceInput(device: audioCaptureDevice[0] as! AVCaptureDevice)) as AVCaptureInput
for device in devices {
if(device.position == AVCaptureDevicePosition.Back){
myDevice = device as? AVCaptureDevice
}
}
let status = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
print(status == AVAuthorizationStatus.Authorized)
print(status == AVAuthorizationStatus.Denied)
print(status == AVAuthorizationStatus.Restricted)
print(status.rawValue)
if status != AVAuthorizationStatus.Authorized {
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted :Bool) -> Void in
if granted == false {
// Camera not Authorized
dispatch_async(dispatch_get_main_queue()) {
print("Camera not Authorized")
self.checkCamera()
return
}
}
});
}
您需要设置一对新的 Info.plist 值,与位置服务的字符串相同 iOS8:
只需为它们设置描述字符串即可。