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