NSPhotoLibraryUsageDescription密钥必须出现在Info.plist中才能使用相机胶卷


156

最近,我开始出现此错误:

要使用相机胶卷,Info.plist中必须存在NSPhotoLibraryUsageDescription密钥。

我正在使用React Native来构建我的应用程序(我不熟悉ios本机开发),而且我不知道如何将此密钥添加到Info.plist

你能举个例子吗?谢谢

我正在使用npm包 "react-native-camera-roll-picker": "^1.1.7"

在此处输入图片说明


1
有关添加到Info.plist的内容的示例,请参见stackoverflow.com/a/39476283/1226963。另外,只需进行搜索NSPhotoLibraryUsageDescription,您就会发现很多示例。
rmaddy16年

Answers:


391

感谢@rmaddy,我在Info.plist中的其他键字符串对之后添加了它,并修复了问题:

<key>NSPhotoLibraryUsageDescription</key>
<string>Photo Library Access Warning</string>

编辑:

我最终在我的应用程序的不同组件上遇到了类似的问题。最终添加了所有这些密钥(更新到Xcode8 / iOS10之后):

<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app does not require access to the microphone.</string>
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera.</string>

检出此developer.apple.com链接以获取属性列表键引用的完整列表

完整清单:

苹果音乐:

<key>NSAppleMusicUsageDescription</key>
<string>My description about why I need this capability</string>

蓝牙:

<key>NSBluetoothPeripheralUsageDescription</key>  
<string>My description about why I need this capability</string>

日历:

<key>NSCalendarsUsageDescription</key>
<string>My description about why I need this capability</string>

相机:

<key>NSCameraUsageDescription</key>
<string>My description about why I need this capability</string>

联系人:

<key>NSContactsUsageDescription</key>
<string>My description about why I need this capability</string>

FaceID:

<key>NSFaceIDUsageDescription</key>
<string>My description about why I need this capability</string>

健康分享:

<key>NSHealthShareUsageDescription</key>
<string>My description about why I need this capability</string>

健康状况更新:

<key>NSHealthUpdateUsageDescription</key>
<string>My description about why I need this capability</string>

家用套件:

<key>NSHomeKitUsageDescription</key>
<string>My description about why I need this capability</string>

位置:

<key>NSLocationUsageDescription</key>
<string>My description about why I need this capability</string>

位置(始终):

<key>NSLocationAlwaysUsageDescription</key>
<string>My description about why I need this capability</string>

位置(使用时):

<key>NSLocationWhenInUseUsageDescription</key>
<string>My description about why I need this capability</string>

麦克风:

<key>NSMicrophoneUsageDescription</key>
<string>My description about why I need this capability</string>

运动(加速度计):

<key>NSMotionUsageDescription</key>
<string>My description about why I need this capability</string>

NFC(近场通信):

<key>NFCReaderUsageDescription</key>
<string>My description about why I need this capability</string>

图片库:

<key>NSPhotoLibraryUsageDescription</key>
<string>My description about why I need this capability</string>

照片库(仅写访问):

<key>NSPhotoLibraryAddUsageDescription</key>
<string>My description about why I need this capability</string>

温馨提示:

<key>NSRemindersUsageDescription</key>
<string>My description about why I need this capability</string>

Siri:

<key>NSSiriUsageDescription</key>
<string>My description about why I need this capability</string>

语音识别:

<key>NSSpeechRecognitionUsageDescription</key>
<string>My description about why I need this capability</string>

15
我一直在使用字符串“此应用程序不需要访问照片库”。
Daniel T.

我在info.plist文件中添加了键和字符串,然后使用终端构建应用程序,所有这些更改都已删除。请对此进行指导
Dinesh Vaitage

我添加了它,但仍然崩溃并出现相同的错误。为什么会这样呢?
fish40

1
在哪里可以找到ionic中的info.plist文件?我无法理解。
Anuj

63

我最喜欢的方式

1.打开 info.plist

在此处输入图片说明

2.单击此按钮添加新密钥

在此处输入图片说明

3.向下滚动以查找 隐私-照片库使用说明

在此处输入图片说明

4.选择它,然后在右侧添加您的描述

在此处输入图片说明


我添加了它,但仍然崩溃并出现相同的错误。为什么会这样呢?
fish40

5
@ fish40也许您可以尝试单击project-target-info,然后将其添加到其中,看看会发生什么?
光明的未来

12
您的关键描述让我度过了XD
Fareed Alnamrouti

2
使用说明让我很高兴。修正了我的问题,太开心了!
James Dunne

1
在哪里可以找到info.plist文件?我无法理解。
Anuj

17

在info.plist文件中添加以下代码

<key>NSPhotoLibraryUsageDescription</key>
<string>My description about why I need this capability</string>

在此处输入图片说明


2
这正是我所需要的...通过源代码方法,我终于成功上传了我的应用程序!TNX :)
BvdVen

奇怪的是,这行得通,但是其他方法却没有,也许只是xcode 9 beta上的一个错误。非常感谢!!!
JohnV

欢迎您,很高兴为您提供帮助。
Dinesh Vaitage

10

您需要将这两个粘贴到info.plist中,这对我来说是在iOS 11中起作用的唯一方法。

    <key>NSPhotoLibraryUsageDescription</key>
    <string>This app requires access to the photo library.</string>

    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>This app requires access to the photo library.</string>

4

对于相机访问,请使用:

<key>NSCameraUsageDescription</key>
<string>Camera Access Warning</string>

1

为了保存或从相机胶卷检索图像。此外,您需要向用户询问权限,否则将收到此错误,否则您的应用程序可能会崩溃。为了避免这种情况,请将其添加到您的info.plist

<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app requires read and write permission from the user.</string>

如果是Xamarin.iOS

 if you're adding it from the generic editor then "Privacy - Photo Library Additions Usage Description" will be the given option you will find out instead of "NSPhotoLibraryAddUsageDescription".

0

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

"Privacy - Photo Library Additions Usage Description" for iOS 11 and later

"Privacy - Photo Library Usage Description" for iOS 6.0 and later

打开plist文件和此代码

<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>

<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app requires access to the photo library.</string>

0

如果您在Info.plist中添加了密钥-字符串对(请参阅上面的Murat的答案),但仍然出现错误,请尝试检查您当前正在工作的目标是否具有密钥。

就我而言,我有两个目标(开发和开发)。我在编辑器中添加了键,但是它仅适用于主要目标,并且我正在测试开发目标。因此,我不得不打开XCode,单击项目> Info>在此处添加开发目标的密钥对。


0

几天前,我的IONIC 4项目也遇到了同样的问题。当我上传IPA时,我从App Store Connect收到此警告。

在此处输入图片说明

我通过以下步骤解决了“ info.plist中缺少目的字符串”的问题。希望它也对您有用。

  1. 转到您的“ info.plist”文件。

在此处输入图片说明

  1. 找到此密钥,称为Privacy - Photo Library Usage Description。如果不存在,请添加一个新值,如下面的图像所示。

在此处输入图片说明

谢谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.