177

使用iOS 10.0最后一个测试版。我曾尝试使用相机扫描我的应用程序中的条形码,但它因运行时错误而崩溃。

此应用程序已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSCameraUsageDescription 键和一个字符串值,向用户解释应用如何使用这些数据。

把这个key放到plist里面,还是crash了?

4

13 回答 13

253

在 iOS 10 之后,您必须在 Info.plist 中定义并提供应用程序访问的所有系统隐私敏感数据的使用说明,如下所示:

日历

Key    :  Privacy - Calendars Usage Description    
Value  :  $(PRODUCT_NAME) calendar events

提醒 :

Key    :   Privacy - Reminders Usage Description    
Value  :   $(PRODUCT_NAME) reminder use

接触 :

Key    :   Privacy - Contacts Usage Description     
Value  :  $(PRODUCT_NAME) contact use

照片 :

Key    :  Privacy - Photo Library Usage Description    
Value  :  $(PRODUCT_NAME) photo use

蓝牙分享:

Key    :  Privacy - Bluetooth Peripheral Usage Description     
Value  :  $(PRODUCT_NAME) Bluetooth Peripheral use

麦克风 :

Key    :  Privacy - Microphone Usage Description    
Value  :  $(PRODUCT_NAME) microphone use

相机 :

Key    :  Privacy - Camera Usage Description   
Value  :  $(PRODUCT_NAME) camera use

地点 :

Key    :  Privacy - Location Always Usage Description   
Value  :  $(PRODUCT_NAME) location use

Key    :  Privacy - Location When In Use Usage Description   
Value  :  $(PRODUCT_NAME) location use

希思:

Key    :  Privacy - Health Share Usage Description   
Value  :  $(PRODUCT_NAME) heath share use

Key    :  Privacy - Health Update Usage Description   
Value  :  $(PRODUCT_NAME) heath update use

家庭套件:

Key    :  Privacy - HomeKit Usage Description   
Value  :  $(PRODUCT_NAME) home kit use

媒体库:

Key    :  Privacy - Media Library Usage Description   
Value  :  $(PRODUCT_NAME) media library use

运动 :

Key    :  Privacy - Motion Usage Description   
Value  :  $(PRODUCT_NAME) motion use

语音识别 :

Key    :  Privacy - Speech Recognition Usage Description   
Value  :  $(PRODUCT_NAME) speech use

SiriKit:

Key    :  Privacy - Siri Usage Description  
Value  :  $(PRODUCT_NAME) siri use

电视提供商:

Key    :  Privacy - TV Provider Usage Description   
Value  :  $(PRODUCT_NAME) tvProvider use

您可以在此链接中获取详细信息。

于 2016-09-24T19:54:30.943 回答
120

由于 Apple 改变了您在iOS 10.

您需要将“ Privacy - Camera usage description”键添加到您的应用程序Info.plist及其适用于您的应用程序的使用信息中,如下例所示,我提供了我用来扫描条形码的示例。

有关更多信息,请查看以下屏幕截图。

在此处输入图像描述

于 2016-09-21T05:57:32.280 回答
65

您必须在 info.plist 中添加以下键。

NSCameraUsageDescription 或者 Privacy - Camera usage description

并添加使用说明。

此链接中提供了详细的屏幕截图

于 2016-09-14T10:23:52.773 回答
52

或者打开 Info.plist 作为源代码并添加:

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
于 2016-11-02T19:23:13.303 回答
38

使用这些原始值并复制到 info.plist

    <key>NSCalendarsUsageDescription</key>
      <string>$(PRODUCT_NAME) calendar events</string>
    <key>NSRemindersUsageDescription</key>
      <string>$(PRODUCT_NAME) reminder use</string>
    <key>NSCameraUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSMicrophoneUsageDescription</key>
      <string>This app requires to access your microphone to record video with your voice send via chat</string>
    <key>NSPhotoLibraryUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSContactsUsageDescription</key>
       <string>$(PRODUCT_NAME) contact use</string>
    <key>NSLocationAlwaysUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
    <key>NSLocationWhenInUseUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
于 2017-05-09T12:05:11.330 回答
27

xcode UI 已从一个版本更改为下一个版本,因此如果有帮助 Project -> Target -> Info,您可以在此处更新 9.0 beta 4 的 plist在此处输入图像描述

于 2017-08-24T01:36:41.673 回答
6

对于那些即使您在 Info.plist 中添加了正确的键仍然遇到错误的人:

确保将密钥添加到正确的 Info.plist 中。较新版本的 xCode,显然有 3 Info.plist。

一个位于您的应用程序名称的文件夹下,它为我解决了问题。

第二个在 YourappnameTests 下,第三个在 YourappnameUITests 下。

希望能帮助到你。

于 2018-09-24T22:08:04.583 回答
6

如果您使用的是 Ionic,则可以通过添加内部平台 ios 标记直接从config.xml解决它:

<platform name="ios">
.
.
.
    <config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
        <string>photo library usage description</string>
    </config-file>
    <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
        <string>camera usage description</string>
    </config-file>
.
.
.
</platform>

我也要感谢@BHUPI 的回答。

于 2019-06-04T13:12:20.537 回答
4

我在尝试使用相机时遇到的另一个例子是,_CRASHING_DUE_TO_PRIVACY即使添加了“相机使用说明”,它仍然忙于崩溃。在未能从调用堆栈中获得任何有形的东西后,切换到“组织者”并查看设备上的崩溃报告。我发现它实际上是在抱怨由于缺少“麦克风使用说明”而导致的隐私。我添加了这一点,并摆脱了这种神秘的故障。

于 2016-12-28T12:19:38.097 回答
2

我检查了 plist 发现它不起作用,只有在“项目”信息中,您需要添加“隐私 - 相机 ....”,然后它应该可以工作。希望能帮到你。

于 2019-08-19T18:50:52.300 回答
1

为此,您可以向应用的 Info.plist 中添加使用密钥以及目的字符串。NSCameraUsageDescription 指定你的应用访问设备摄像头的原因

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

于 2018-02-27T05:37:59.363 回答
1

我遇到了同样的问题,找不到解决方案。Mark90 是对的,有很多 info.plist 文件,你应该编辑正确的。转到项目,在目标下选择项目(不是测试),在选项卡栏中选择信息并在“自定义 iOS 目标属性”下添加权限。

于 2019-11-04T11:29:05.773 回答
0

对于那些像我一样正在测试 Ionic 项目并且必须添加隐私权限密钥的人,请确保将它们添加到正确的.plist文件中。找到它的最好方法是使用 Xcode 搜索,带有您的应用名称的那个就是那个。我分享了一个屏幕截图,右边有一个圆圈,Info.plist你需要修改。我浪费了时间修改库文件夹中的另一个,并导致有关隐私的错误。希望这个截图有帮助。就我而言,在文件底部我单击+并滚动直到找到Privacy - Camera usage description,我插入了简短描述used for Qrcodes并开始工作

在此处输入图像描述

于 2021-09-28T21:54:09.640 回答