Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift 2.0中检查权限_Ios_Permissions_Swift2_Touch Up Inside - Fatal编程技术网

Ios 在Swift 2.0中检查权限

Ios 在Swift 2.0中检查权限,ios,permissions,swift2,touch-up-inside,Ios,Permissions,Swift2,Touch Up Inside,无论我在哪里添加代码来检查摄像头/麦克风/照片等的权限,弹出确认总是会终止我的应用程序或将我送回几个视图控制器 示例如下。 当我有一个处理权限的页面时,我几乎并没有视图控制器(部分通过注册过程)。用户点击一个按钮来处理摄像头权限,该权限使用以下代码 if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) != AVAuthorizationStatus.Authorized { AVCapture

无论我在哪里添加代码来检查摄像头/麦克风/照片等的权限,弹出确认总是会终止我的应用程序或将我送回几个视图控制器

示例如下。

当我有一个处理权限的页面时,我几乎并没有视图控制器(部分通过注册过程)。用户点击一个按钮来处理摄像头权限,该权限使用以下代码

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>
NSPhotoLibraryUsageDescription
此应用程序需要访问照片库。
NSCameraUsageDescription
此应用程序需要访问摄像头。

denied怎么样?@Misha-我知道用户可以选择更多选项,如果需要,这些选项会被处理,但与我想的问题无关。但是,如果权限被拒绝,应用程序将如何决定该做什么?另一个注意事项是,您是否在plist中添加了密钥?@Misha-它将根据代码的要求决定该做什么-在这种情况下,它实际上没有做任何事情,但重点是当弹出窗口显示时视图会回滚-其余部分与此无关,但我将编辑问题以避免将来的混淆。不管它在未授权的情况下做什么,重点是我总是授权,但流程崩溃或回滚视图,无论是在它要求作出决定时,还是在授权时,Hanks Misha-我都有状态检查,以确定当前的状态和其他代码(授权==true)为了确定他们在弹出窗口中的选择-对于密钥,我正在添加这些密钥,因为我有一个用于NSLOCATIONWHENUSAGESCRIPTION的密钥,但相机/照片的密钥带有“隐私-相机使用说明”(不确定我从何处获得该密钥)-稍后将返回结果。似乎我在info.plist中有一个缺少的描述条目,导致它弹出到最近的navigationController(这很奇怪,但没关系)-添加我能想到的所有描述似乎解决了问题