为什么我的 iOS 应用程序不请求用户访问相机的权限?

bat*_*man 6 ios avcapturesession avcapturedevice avcam

我开发 iOS 应用程序,它使用相机。AVCaptureDeviceInput 用于与相机连接。我检查了授权状态为

- (void)checkDeviceAuthorizationStatus
{
    NSString *mediaType = AVMediaTypeVideo;

    [AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
        if (granted)
        {
            //Granted access to mediaType
            [self setDeviceAuthorized:YES];
        }
        else
        {
            //Not granted access to mediaType
            dispatch_async(dispatch_get_main_queue(), ^{
                [[[UIAlertView alloc] initWithTitle:@"AVCam!"
                                            message:@"AVCam doesn't have permission to use Camera, please change privacy settings"
                                           delegate:self
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil] show];
                [self setDeviceAuthorized:NO];
            });
        }
    }];
}
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序时,为什么它不询问用户访问相机的权限?因此该应用程序不会出现在设置/隐私/相机中以手动允许访问相机。然后显示此错误"AVCam doesn't have permission to use Camera, please change privacy settings"并且应用程序无法使用相机。

编辑:这意味着未经用户许可,应用程序不得访问相机。不仅是相机,相机胶卷也存在同样的问题。

所有这些事情都是在我在“设置/重置/恢复所有设置”中重置设置后发生的。在此之前,该应用程序运行良好。

bat*_*man 6

现在问题已经解决了。我需要一步步回溯,花了很长时间才解决问题。有些人建议包含 NSCamerausageDescription Key。实际上,对于 iOS 7 及以上版本的设备来说这是必需的。我包含了密钥,但仍然没有询问用户权限。最后我在Info.plist中找到了问题。有一些多余的行,我删除了三行。不确定它们与我的问题有何关系。我删除的有

(1)获取信息字符串

(2)捆绑显示名称

(3)应用类别

删除info.plist中的这三行后。然后应用程序请求用户许可。关键是您可能需要检查您的 Info.plist 是否存在此类问题。

  • 哇...这实际上对我也有用。就我而言,我只需要删除捆绑显示名称,现在它要求相机权限,而以前则不需要。NSCameraUsageDescriptionKey 一直都在那里。 (2认同)