NSCameraUsageDescription在iOS 10.0运行时崩溃?
使用iOS 10.0
最后testing版。 我曾尝试使用相机扫描我的应用程序中的条形码,并与此运行时错误崩溃。
这个应用程序已经崩溃,因为它试图访问隐私敏感的数据没有使用说明。 应用程序的Info.plist必须包含一个带有string值的NSCameraUsageDescription项,向用户解释应用程序如何使用此数据。
把这个钥匙插入plist,但它仍然坠毁?
在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
你可以在这个链接中获得详细的信息。
由于苹果改变了你如何访问iOS 10
任何用户私人数据types。
您需要将“ Privacy - Camera usage description
”键添加到您的应用程序的Info.plist
及其应用程序的使用信息中,如以下示例所示,我已经提供了用于扫描条形码的示例。
欲了解更多信息,请查看下面的截图。
你必须在info.plist中添加下面的关键字。
NSCameraUsageDescription
或Privacy - Camera usage description
并添加使用说明。
详细的截图可以在这个链接中find
或者打开Info.plist作为源代码并添加:
<key>NSCameraUsageDescription</key> <string>Camera usage description</string>
使用这些原始值并复制到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>
我尝试使用相机时遇到的另一个实例是,即使在添加“相机使用说明”之后,它仍然在忙于提供相同的_CRASHING_DUE_TO_PRIVACY
。 在没有从调用堆栈中得到任何有形的东西之后,切换到“组织者”并查看设备上的崩溃报告。 我发现实际上是因为缺less“麦克风使用说明”而抱怨隐私。 我补充说,摆脱了这样一个神秘的分解。
Xcode UI已经从一个版本改变到下一个,所以这里是你更新9.0 beta 4的plist,如果有帮助Project – > Target – > Info