繁体   English   中英

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

[英]Why my iOS app does not ask user permission to access camera?

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

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

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

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

(1)获取信息字符串

(2)Bundle 显示名称

(3)应用类别

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

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

看看上面矛盾的解决方案 - 删除和添加包显示名称 - 让我想到了这个错误的原因。 我猜这个(Apple)错误只出现在安装了相同应用程序的设备上,当时它没有相机权限(没有相机功能的旧版本或只是糟糕的 testflight 版本)。 因此,如果您只是从头开始删除和安装,则被窃听的应用程序权限将变得没问题。 说到不卸载现有应用程序的解决方法,如果您更改 plist 中的包描述(删除或添加),那么 iOS 将使用新的 plist,其权限超过已安装的权限,正如我们所期望的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM