我开发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];
});
}
}];
}
当我启动应用程序时,为什么它不会要求用户访问相机的权限?
因此,应用程序不会出现在设置/隐私/相机中以手动允许访问相机。
然后显示此错误"AVCam doesn't have permission to use Camera, please change privacy settings"
,应用无法使用相机。
编辑: 这意味着在未征得用户许可的情况下,不允许应用访问相机。 不仅相机,相机胶卷也有同样的问题。
在重置设置/重置/休息所有设置中的设置后,所有这些都发生了。在此之前,应用程序运行良好。
答案 0 :(得分:4)
问题现在解决了。我需要一步一步地追溯,并花了我很长时间来解决问题。 有人建议包括 NSCamerausageDescription键。实际上,iOS 7及以上版本的设备是必需的。我包含了密钥但仍未提出用户权限。 最后我在Info.plist上找到了问题。 有一些额外的行,我删除了三行。不确定它们与我的问题有什么关系。 我删除的是
(1)获取信息字符串
(2)捆绑显示名称
(3)申请类别
在info.plist中删除这三行后。然后该应用程序会询问用户权限。关键是您可能需要检查Info.plist是否存在此类问题。
答案 1 :(得分:0)
您需要将应用名称放在info.plist
中的“Bundle display name”中答案 2 :(得分:0)
仔细研究以上矛盾的解决方案-删除并添加捆绑显示名称-让我想到了导致此错误的原因。我猜这个(苹果)错误仅在没有摄像头许可的情况下(仅安装了相同应用的设备上出现)(没有摄像头功能的较旧版本或不良的testflight版本)出现。因此,如果您只是从头删除并安装,则错误的应用程序权限将变得可以。说到不卸载现有应用程序的解决方法,如果您更改了plist中的捆绑包描述(删除或添加),那么iOS将使用新的plist,并按我们的预期对已安装的权限进行权限。