访问对隐私敏感的数据iOS10

在访问对隐私敏感的数据(如照片库,相机,联系人,日历,提醒,麦克风,位置等)之前,必须先获得授权。 当您未经许可直接访问它们时,您的应用程序将崩溃。 然后,Xcode将记录如下:

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

该如何处理? 正如苹果所说:

您必须通过在Info.plist文件中包含适当用途的字符串键来静态声明应用程序对受保护数据类的预期用途。

在您的项目中打开名为info.plist的文件,右键单击它,将其作为Source Code打开,然后将此代码粘贴到该文件中。 或者,您可以默认打开info.plist作为“ Property List ,单击“添加”按钮,Xcode将在键入“ Privacy -时为您提供建议的完成内容Privacy -借助键盘⬆️和⬇️。

可算作私有数据的框架列表很长:

联系人,日历,提醒,照片,蓝牙共享,麦克风,相机,位置,健康,HomeKit,媒体库,动作,CallKit,语音识别,SiriKit,电视提供商。

请记住在之间写下您为何要求此授权的描述,否则您的应用将被apple拒绝:

   
NSPhotoLibraryUsageDescription
$(PRODUCT_NAME)照片使用


NSCameraUsageDescription
$(PRODUCT_NAME)相机使用


NSMicrophoneUsageDescription
$(PRODUCT_NAME)麦克风使用


NSLocationUsageDescription
$(PRODUCT_NAME)的位置使用


NSLocationWhenInUseUsageDescription
$(PRODUCT_NAME)的位置使用


NSLocationAlwaysUsageDescription
$(PRODUCT_NAME)始终使用位置


NSCalendarsUsageDescription
$(PRODUCT_NAME)日历事件


NSRemindersUsageDescription
$(PRODUCT_NAME)提醒使用


NSContactsUsageDescription
$(PRODUCT_NAME)联系人使用


NSMotionUsageDescription
$(PRODUCT_NAME)动作使用


NSHealthUpdateUsageDescription
$(PRODUCT_NAME)健康更新使用


NSHealthShareUsageDescription
$(PRODUCT_NAME)健康共享使用


NSBluetoothPeripheralUsageDescription
$(PRODUCT_NAME)蓝牙外围设备使用


NSAppleMusicUsageDescription
$(PRODUCT_NAME)媒体库使用


NSSiriUsageDescription
$(PRODUCT_NAME)siri使用


NSHomeKitUsageDescription
$(PRODUCT_NAME)家用套件的使用


NSSpeechRecognitionUsageDescription
$(PRODUCT_NAME)语音使用


NSVideoSubscriberAccountUsageDescription
$(PRODUCT_NAME)tvProvider使用

如果不起作用,请尝试请求后台授权:

   UIBackgroundModes  


位置

或转到target -> Capabilities -> Background Modes -> open the background Modes -> set switch to true mode.
target -> Capabilities -> Background Modes -> open the background Modes -> set switch to true mode.
然后清理您的项目,运行它。