在 Swift 2.0 中检查权限
Checking permissions in Swift 2.0
无论我在哪里添加代码来检查 camera/mic/photos 之类的权限,弹出确认总是会终止我的应用程序或向我发送一些视图控制器。
举例如下
当我有一个处理权限的页面时,我几乎没有视图控制器(通过注册过程的一部分)。用户点击一个按钮来处理使用以下代码的相机权限。
if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) != AVAuthorizationStatus.Authorized {
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted :Bool) -> Void in
if granted == true {
// do something
} else {
// determine whether not determined, denied etc and do something else
}
});
}
然而,一旦 iOS 确认弹出,它就会将应用程序抛回 2 个视图控制器。在其他情况下(例如在 viewDidLoad
上)权限请求会在做出选择后立即终止应用程序。
知道我在我的设置中遗漏了什么或如何防止这种行为吗?
谢谢。
我认为你误解了我的评论,我的意思是
if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) != AVAuthorizationStatus.Authorized { // here you are checking if it's not authorized i..e it's denied, NotDetermined or Restricted
....
}
else if if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) == AVAuthorizationStatus.Authorized
// do the something in case it's autorized
我在这里列出密钥 -
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera.</string>
无论我在哪里添加代码来检查 camera/mic/photos 之类的权限,弹出确认总是会终止我的应用程序或向我发送一些视图控制器。
举例如下
当我有一个处理权限的页面时,我几乎没有视图控制器(通过注册过程的一部分)。用户点击一个按钮来处理使用以下代码的相机权限。
if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) != AVAuthorizationStatus.Authorized {
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted :Bool) -> Void in
if granted == true {
// do something
} else {
// determine whether not determined, denied etc and do something else
}
});
}
然而,一旦 iOS 确认弹出,它就会将应用程序抛回 2 个视图控制器。在其他情况下(例如在 viewDidLoad
上)权限请求会在做出选择后立即终止应用程序。
知道我在我的设置中遗漏了什么或如何防止这种行为吗?
谢谢。
我认为你误解了我的评论,我的意思是
if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) != AVAuthorizationStatus.Authorized { // here you are checking if it's not authorized i..e it's denied, NotDetermined or Restricted
....
}
else if if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) == AVAuthorizationStatus.Authorized
// do the something in case it's autorized
我在这里列出密钥 -
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera.</string>