iOS 10.0运行时崩溃时的NSCameraUsageDescription是否崩溃?


154

使用iOS 10.0上一个Beta。我曾尝试使用Camera扫描应用程序中的条形码,但由于运行时错误而崩溃。

该应用已崩溃,因为它尝试访问没有使用说明的隐私敏感数据。应用程序的Info.plist必须包含NSCameraUsageDescription键,该键具有字符串值,该字符串值向用户说明应用程序如何使用此数据。

将此密钥放入plist,但仍然崩溃?


6
我有同样的问题,在info.plist中添加了NSCameraUsageDescription,但仍然崩溃并显示相同的消息。您设法解决了吗?显然,没有人回答这个问题,即使您已经添加了密钥,它也不会崩溃。
卡门A

如果将条目添加到正确的info.plist文件中,但仍然失败,则可能是因为Xcode有时无法注意到对诸如info.plist,图像,音频,电影等资源文件的更改。您可能需要执行从Derived Data文件夹中清除或删除应用程序生成产品,以强制Xcode使用最新版本。
Walt Sellers

Answers:


227

在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

HomeKit:

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

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


1
Privacy - Photo Library Usage Description是为错误做的NSPhotoLibraryUsageDescription

我是Apple Development的新手,这个问题很烦人。很高兴我遇到了它。干杯!
user2529011 '18

1
@MaylorTaylor:是的,您必须添加它。
Bhoopi

111

随着Apple的改变,您可以访问中的任何用户私有数据类型iOS 10

您需要Privacy - Camera usage description在应用程序Info.plist及其应用信息中添加“ ”键,该信息适用于您的应用程序,如下面的示例(我已经提供过用于扫描条形码的示例)所示。

有关更多信息,请找到以下屏幕截图。

在此处输入图片说明


62

您必须在info.plist的键下方添加此内容。

NSCameraUsageDescription 要么 Privacy - Camera usage description

并添加使用说明。

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


听起来他已经添加了,但仍然崩溃。即使KVP在plist中,我也遇到同样的问题,但它仍然崩溃,好像不是。

43

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

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>

4
如果有人要本地化“ NSCameraUsageDescription”,请添加"NSCameraUsageDescription" = "Requires access to the camera";本地化的infoPlist.strings文件
Khurram Shehzad

30

使用这些原始值并复制到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>

从您得到这些原始密钥名称?
Omar N Shamali

这很棒。它使我免于在
xCode中

26

xcode用户界面已从一个版本更改为另一个版本,因此如果可以帮助Project-> Target-> Info,请在此处更新9.0 beta 4的plist。在此处输入图片说明


2
这应该是公认的答案!尽管已经添加<key>NSCameraUsageDescription</key>info.plist,但我在XCode 9.2上也遇到了同样的问题。
psantos '17

2
绝对可以接受的答案!!我的项目中有两个目标,并且尝试将其添加<key>NSCameraUsageDescription</key>到第二个info.plist文件中,但是没有任何效果,并且我可以通过运行git status来确认XCode(10.1)绝对没有考虑这些更改,因为我的另一个目标的info.plist没有任何更改。因此正确的方法是浏览Project-> Target-> Info。谢啦!
bra.Scene19年

4

我尝试使用相机时遇到的另一个实例是,_CRASHING_DUE_TO_PRIVACY即使添加了“相机使用说明”后,相机仍在忙于崩溃。在无法从调用堆栈中得到有形内容后,切换到“组织器”并查看设备上的崩溃报告。我发现实际上是由于缺少“麦克风使用说明”而抱怨隐私。我添加了它,摆脱了这种神秘的崩溃。


4

对于那些即使您已在Info.plist中添加了适当的键仍仍收到错误的用户:

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

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

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

希望能帮助到你。


2

如果您使用的是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的回答。



1

我检查了plist,发现它不起作用,仅在“项目”信息中,您需要添加“ Privacy-Camera ....”,然后它应该起作用。希望对您有所帮助。


0

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

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.