如何检测用户是否单击了不允许访问相机
How to detect user has clicked Don't Allow access to camera
我正在使用 UIImagePicker
向用户展示相机以拍摄将在应用中使用的照片。
我的问题是,在用户第一次打开图像选择器时,他们会看到一条提示:“"my App" 想访问您的相机”,有两个选项,不允许和确定.
我的要求是,当用户单击“不允许”时,图像选择器将被关闭,留下黑色视图。有没有办法检测到用户选择了不允许?
这是我要展示的代码 UIImagePicker
:
var PhotoPicker:UIImagePickerController = UIImagePickerController()
PhotoPicker.delegate = self
PhotoPicker.sourceType = .Camera
PhotoPicker.cameraFlashMode = .Off
PhotoPicker.showsCameraControls = false
PhotoPicker.cameraDevice = .Rear
self.presentViewController(PhotoPicker, animated: false, completion: nil)
查看此检测相机权限
Presenting camera permission dialog in iOS 8
当用户选择不允许时使用此选项。
PhotoPicker.dismissViewControllerAnimated(false, completion: nil)
检测对您图书馆的访问:
为此您需要使用 AssetsLibrary。一、导入资产库框架:
import AssetsLibrary
然后,请求授权状态,如果未确定,则使用块来捕获那些事件,如下所示:
if ALAssetsLibrary.authorizationStatus() == ALAuthorizationStatus.NotDetermined {
let library = ALAssetsLibrary()
library.enumerateGroupsWithTypes(.All, usingBlock: { (group, stop) -> Void in
// User clicked ok
}, failureBlock: { (error) -> Void in
// User clicked don't allow
imagePickerController.dismissViewControllerAnimated(true, completion: nil)
})
}
检测对摄像头的访问:
为此您需要使用 AVFoundation。首先导入avfoundation框架:
import AVFoundation
然后,像以前一样,在您转到 imagepicker 并捕获事件时请求用户许可。
if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) == AVAuthorizationStatus.NotDetermined {
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (videoGranted: Bool) -> Void in
// User clicked ok
if (videoGranted) {
// User clicked don't allow
} else {
imagePickerController.dismissViewControllerAnimated(true, completion: nil)
}
})
}
希望对您有所帮助!
在iOS10中,使用:
import Photos
let authStatus = PHPhotoLibrary.authorizationStatus()
if authStatus == .notDetermined || authStatus == .denied {
PHPhotoLibrary.requestAuthorization({ (status) in
if status == PHAuthorizationStatus.authorized {
} else {
imagePickerController.dismissViewControllerAnimated(true, completion: nil)
}
})
}
我正在使用 UIImagePicker
向用户展示相机以拍摄将在应用中使用的照片。
我的问题是,在用户第一次打开图像选择器时,他们会看到一条提示:“"my App" 想访问您的相机”,有两个选项,不允许和确定.
我的要求是,当用户单击“不允许”时,图像选择器将被关闭,留下黑色视图。有没有办法检测到用户选择了不允许?
这是我要展示的代码 UIImagePicker
:
var PhotoPicker:UIImagePickerController = UIImagePickerController()
PhotoPicker.delegate = self
PhotoPicker.sourceType = .Camera
PhotoPicker.cameraFlashMode = .Off
PhotoPicker.showsCameraControls = false
PhotoPicker.cameraDevice = .Rear
self.presentViewController(PhotoPicker, animated: false, completion: nil)
查看此检测相机权限
Presenting camera permission dialog in iOS 8
当用户选择不允许时使用此选项。
PhotoPicker.dismissViewControllerAnimated(false, completion: nil)
检测对您图书馆的访问:
为此您需要使用 AssetsLibrary。一、导入资产库框架:
import AssetsLibrary
然后,请求授权状态,如果未确定,则使用块来捕获那些事件,如下所示:
if ALAssetsLibrary.authorizationStatus() == ALAuthorizationStatus.NotDetermined {
let library = ALAssetsLibrary()
library.enumerateGroupsWithTypes(.All, usingBlock: { (group, stop) -> Void in
// User clicked ok
}, failureBlock: { (error) -> Void in
// User clicked don't allow
imagePickerController.dismissViewControllerAnimated(true, completion: nil)
})
}
检测对摄像头的访问:
为此您需要使用 AVFoundation。首先导入avfoundation框架:
import AVFoundation
然后,像以前一样,在您转到 imagepicker 并捕获事件时请求用户许可。
if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) == AVAuthorizationStatus.NotDetermined {
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (videoGranted: Bool) -> Void in
// User clicked ok
if (videoGranted) {
// User clicked don't allow
} else {
imagePickerController.dismissViewControllerAnimated(true, completion: nil)
}
})
}
希望对您有所帮助!
在iOS10中,使用:
import Photos
let authStatus = PHPhotoLibrary.authorizationStatus()
if authStatus == .notDetermined || authStatus == .denied {
PHPhotoLibrary.requestAuthorization({ (status) in
if status == PHAuthorizationStatus.authorized {
} else {
imagePickerController.dismissViewControllerAnimated(true, completion: nil)
}
})
}