Xcode:NSCameraUsageDescription的Info.plist键丢失

31
在将GPUImage添加到我的Xcode项目后,我的应用程序因缺少NSCameraUsageDescriptionInfo.plist密钥而被拒绝。

缺少Info.plist密钥-此应用程序尝试访问隐私敏感数据而没有使用说明。 应用程序的Info.plist必须包含一个NSCameraUsageDescription密钥,其中包含一个字符串值,向用户解释该应用程序如何使用此数据。

我以几种不同的方式将该密钥和说明添加到了我的plist文件中,并且在10个版本构建中都遇到了相同的错误。
这是我的info.plist,其中包含底部的相机使用密钥。

Snap of my info.plist

您有什么想法,为什么我明确在我的 plist 中定义了这个,但仍然被拒绝了吗?


1
根据 https://dev59.com/4lkS5IYBdhLWcg3wxJEF 的说法,这是因为你的值太短或者太模糊了。 - MarkHu
2
你最终解决了这个问题吗?我也卡在同样的问题上 - 不过是针对 macOS 应用程序。 - tcurdt
13个回答

19

在您的应用程序中使用相机,您需要放置 特定和适当的描述。我的一个应用程序因为描述不当而被拒绝了。因此,请尝试使用适当的描述,也许会有所帮助。

<key>Privacy - Camera Usage Description</key>
<string>APPNAME requires access to your phone’s camera.</string>

1
谢谢您的回复,我已经将我的描述更加具体化,但仍然被拒绝了。 - Chris
你也在使用相册吗? - Nirmalsinh Rathod
我甚至没有使用相机,但是我需要GPUImage进行一些内部图像处理,而且我认为GPUImage可能有一些需要相机的框架。然而,我只在拒绝邮件中收到了相机使用错误提示。 - Chris
是的先生。也许有一种方法可以去除需要相机功能的部分,这样我就可以完全跳过这个问题了? - Chris
如果有人不知道,<string>将在请求权限时显示给您的用户,因此现在您应该清楚应该在那里放置什么描述。 - Mahesh Jamdade
关键是Xcode密钥。如果您正在手动编辑plist文件,请使用<key>NSCameraUsageDescription</key> - Capaj

18

虽然这是一个旧问题,但我想分享我的经验...... 对我来说什么都不起作用。我做的是:

  • 使用Xcode编辑plist.info文件。不要使用外部编辑器!

  • 不要编辑文本,使用“+”符号创建新密钥。

  • 它会要求你替换以前的密钥(除非以前的密钥已输入错误......像我的情况一样)

插入图片描述

插入图片描述


14

请在Plist中尝试使用相机和图库权限。

<key>NSCameraUsageDescription</key>
<string>Access camera</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Library</string>

11

我知道这篇文章有点老了,但对我来说,花了一个小时才发现我没有编辑正确的 Info.plist 文件,而是编辑的 UI 测试的那个。请再次确认您正在编辑哪一个文件,它可能是原因。


1
那个答案解决了的问题,所以我很感激! - danwood
宾果 - 生活中的小事情。 - Johnny Rockex

8

即使我在info.plist中添加了privacy-Camera Usage Description,我仍然遇到了同样的问题。我尝试清理和重建项目,重新打开Xcode,但一切都不起作用,直到我在自定义iOS目标属性中添加了privacy-Camera Usage Description。希望这可以解决你的问题。 enter image description here


这几乎是解决问题的相同方法。所以,你需要做的就是转到项目->打包->Info.plist文件->调试,然后在那里添加你的info plist文件路径。 在我的情况下,路径为空,XCode根本没有找到我的Info.plist文件。 - random_coder_101
你救了我的一天!现在它可以工作了。 - Marcin Żmigrodzki

8

您应该在描述中输入使用相机的目的。如果没有说明用途,应用将被拒绝。

您应该添加类似于Appname需要访问相机以拍摄个人资料照片Appname需要访问相机以上传产品图片的内容。

来自apple:请查看此链接

为了保护用户隐私,iOS 10.0或更高版本中链接的iOS应用程序,并且访问设备的相机,必须静态声明意图这样做。在您的应用程序的Info.plist文件中包含NSCameraUsageDescription密钥,并为此密钥提供一个目的字符串。如果您的应用程序尝试访问设备的相机而没有相应的目的字符串,则您的应用程序将退出。


谢谢您的回复,我已经将我的描述更加具体化,但仍然被拒绝了。 - Chris
你给出的描述是什么? - Amal T S
Appname需要访问您的相机以拍摄照片和录制视频。 - Chris
它没有说明为什么需要拍摄照片或视频。您应该添加类似于“Appname需要访问相机以拍摄个人资料照片”或“Appname需要访问相机以上传产品图片”的内容。 - Amal T S
我不确定为什么它被拒绝了。在Brad Larson的GPUImage的情况下,这篇文章可能会对你有所帮助。https://stackoverflow.com/a/26533864/7456236。这是由Brad Larson本人撰写的。 - Amal T S
这直接回答了原帖的问题。 - RobMac

5

我和提问者遇到了相同的错误。但是我不知道为什么会出现这个错误,因为我的应用程序中没有使用任何与相机相关的内容。所以我把这段话作为描述添加进去就解决了。

"AppName 不使用相机来拍摄或上传个人资料照片。"


3

GPUImage是用于捕获图像和视频的,我猜添加麦克风权限可能会解决这个问题。

<key>NSCameraUsageDescription</key>
    <string>Need to access your camera to capture a picture and record a video.</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>Need to access your microphone to record a video.</string>

3

试试看!

<key>NSCameraUsageDescription</key>
<string>Need to access your camera to capture a photo add and update profile picture.</string>

<key>NSPhotoLibraryUsageDescription</key>
<string>Need to access your photo library to select a photo add and update profile picture</string>

4
这并没有解释用户应该如何或为什么要使用它。虽然更有经验的开发人员可能了解 plist 的原始格式,但提问者可能不会。请添加一些解释来支持你的回答。 - D. Greg

1

对于应用商店提交,使用说明应简要解释为什么我们真正需要该功能。

说明:

相机使用

太短了,没有解释我们实际上为什么需要相机。

它应该是这样的:

应用需要使用相机拍摄个人资料照片


谢谢您的回复,我已经将我的描述更加具体化,但仍然被拒绝了。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接