NSPhotoLibraryUsageDescription 键必须存在于 Info.plist 中才能使用相机胶卷
Posted
技术标签:
【中文标题】NSPhotoLibraryUsageDescription 键必须存在于 Info.plist 中才能使用相机胶卷【英文标题】:NSPhotoLibraryUsageDescription key must be present in Info.plist to use camera roll 【发布时间】:2017-01-23 23:47:30 【问题描述】:最近我开始收到这个错误:
NSPhotoLibraryUsageDescription 键必须存在于 Info.plist 中以 使用相机胶卷。
我正在使用 React Native 构建我的应用程序(我不熟悉 ios 原生开发),我不知道如何将这个键添加到 Info.plist
你能举个例子吗?谢谢
我正在使用 npm 包"react-native-camera-roll-picker": "^1.1.7"
【问题讨论】:
请参阅***.com/a/39476283/1226963,了解添加到 Info.plist 的示例。另外,只需在NSPhotoLibraryUsageDescription
上进行搜索,您就会找到大量示例。
【参考方案1】:
截至 2021 年 8 月, 我们不仅要添加这个:
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to photo library so that photos can be selected</string>
但还需要将此添加到 iOS 文件夹内的 info.plist 文件中才能正常工作
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app requires access to the photo library.</string>
【讨论】:
【参考方案2】:使用NSCameraUsageDescription
时,用户可以访问相机并从照片库中选择图像。所以我不需要NSPhotoLibraryUsageDescription
,对吗?
【讨论】:
【参考方案3】:几天前,我的 IONIC 4 项目也遇到了同样的问题。当我上传我的 IPA 时,我从 App Store Connect 收到了这个警告。
我通过以下步骤修复了“info.plist 中缺少目的字符串”问题。希望它也对你有用。
-
转到您的“info.plist”文件。
-
找到这个密钥,称为
Privacy - Photo Library Usage Description
。如果它不存在,请添加一个新的和它的值,如下图所示。
谢谢。
【讨论】:
【参考方案4】:如果您在 Info.plist (see Murat's answer above) 中添加了密钥字符串对,但仍然出现错误,请尝试检查您当前正在处理的目标是否具有密钥。
就我而言,我有 2 个目标(开发和开发)。我在编辑器中添加了键,但它只适用于主要目标,我正在测试开发目标。所以我不得不打开 XCode,点击项目 > 信息 > 在那里添加开发目标的密钥对。
【讨论】:
这也是我的情况。谢谢!【参考方案5】:为了从相机胶卷中保存或检索图像。此外,您需要向用户征求许可,否则您会收到此错误或您的应用程序可能会崩溃。为了避免这种情况,请将其添加到您的 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".
【讨论】:
【参考方案6】:您需要将这两个粘贴到您的 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>
【讨论】:
【参考方案7】:感谢@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>
【讨论】:
我一直在使用字符串“此应用不需要访问照片库。” 我在 info.plist 文件中添加了键和字符串,然后我使用终端构建应用程序,所有这些更改都已删除。请指导一下 我添加了这个,但它仍然因同样的错误而崩溃。为什么会这样? 在哪里可以找到 ionic 中的 info.plist 文件?我无法得到那个。【参考方案8】: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>
【讨论】:
【参考方案9】:在 info.plist 文件中添加以下代码
<key>NSPhotoLibraryUsageDescription</key>
<string>My description about why I need this capability</string>
【讨论】:
这正是我所需要的......通过源方式我终于成功上传了我的应用程序! TNX :) 这很奇怪,但其他方法没有,也许这只是 xcode 9 beta 上的一个错误。非常感谢!!! 欢迎您,很高兴它对您有帮助。【参考方案10】:我最喜欢的方法
1.打开info.plist
2。单击此按钮可添加新密钥
3.向下滚动以查找 隐私 - 照片库使用说明
4.选择它,然后在右侧添加您的描述
【讨论】:
我添加了这个,但它仍然因同样的错误而崩溃。为什么会这样? @fish40 或许您可以尝试单击 project-target-info,然后将其添加到那里,看看会发生什么? 你的关键描述让我很开心 XD 使用说明让我很兴奋。修复了我的问题太幸福了! 在哪里可以找到 info.plist 文件?我无法得到那个。【参考方案11】:相机访问使用:
<key>NSCameraUsageDescription</key>
<string>Camera Access Warning</string>
【讨论】:
以上是关于NSPhotoLibraryUsageDescription 键必须存在于 Info.plist 中才能使用相机胶卷的主要内容,如果未能解决你的问题,请参考以下文章