4

我开发 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",应用程序无法使用相机。

编辑:这意味着未经用户许可,不允许该应用访问相机。不仅相机,相机胶卷也有同样的问题。

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

4

3 回答 3

5

现在问题已经解决了。我需要一步一步地追溯并花了我很长时间来解决问题。有人建议包含 NSCamerausageDescription 键。实际上对于 iOS 7 及更高版本的设备是必需的。我包含了密钥,但尚未询问用户权限。最后我在 Info.plist 发现了问题。有一些额外的行,我删除了三行。不确定它们与我的问题有什么关系。我删除的是

(1)获取信息字符串

(2)捆绑显示名称

(3)申请类别

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

于 2016-02-20T14:48:09.357 回答
0

您需要将应用程序的名称放在 info.plist 中的“Bundle display name”中

于 2016-09-14T18:22:57.953 回答
0

看看上面矛盾的解决方案——删除和添加捆绑显示名称——让我想到了这个错误的原因。我猜这个(Apple)错误只出现在安装了相同应用程序但没有相机权限的设备上(没有相机功能的旧版本或只是糟糕的测试版本)。因此,如果您只是从头开始删除并安装错误的应用程序权限将变得正常。说到不卸载现有应用程序的解决方法,如果您在 plist 中更改捆绑包描述(删除或添加),那么 iOS 将使用新的 plist,并按照我们的预期使用已安装的权限。

于 2020-04-17T16:12:26.803 回答