iOS 10.0 运行时崩溃中的 NSCameraUsageDescription?
NSCameraUsageDescription in iOS 10.0 runtime crash?
使用 iOS 10.0
上次测试版。我曾尝试在我的应用程序中使用相机扫描条形码,但由于此运行时错误而崩溃。
This app has crashed because it attempted to access privacy-sensitive
data without a usage description. The app's Info.plist must contain
an NSCameraUsageDescription key with a string value explaining to the
user how the app uses this data.
把这个key放到plist里了,还是死机了?
您必须在 info.plist 中添加下面的键。
NSCameraUsageDescription
要么
Privacy - Camera usage description
并添加使用说明。
这里有详细的截图link
由于 Apple 更改了您访问 iOS 10
中任何用户私有数据类型的方式。
您需要将“Privacy - Camera usage description
”键添加到您的应用程序的 Info.plist
及其适用于您的应用程序的使用信息,如下例中我提供的我曾经扫描过条形码。
如需了解更多信息,请查看以下屏幕截图。
在 iOS10 之后,您必须定义并提供您的应用程序在 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
您可以在thislink中获取详细信息。
或者打开 Info.plist 作为源代码并添加:
<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
我在尝试使用相机时遇到的另一个实例是,即使在添加 "Camera Usage Description" 之后,它仍然忙于提供相同的 _CRASHING_DUE_TO_PRIVACY
崩溃。在无法从调用堆栈中获取任何有形信息后,切换到 "Organizer" 并查看设备上的崩溃报告。我发现它实际上是在抱怨缺少 "Microphone Usage Description" 导致的隐私问题。我添加了它并摆脱了这种神秘的故障。
使用这些原始值并复制到 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>
xcode UI 从一个版本到下一个版本发生了一些变化,所以如果有帮助,您可以在这里更新 9.0 beta 4 的 plist
项目 -> 目标 -> 信息
您可以通过向您的应用程序的 Info.plist 添加一个使用密钥以及一个目的字符串来做到这一点。
NSCamera使用说明
指定您的应用访问设备相机的原因
对于那些即使您将正确的密钥添加到 Info.plist 中仍然出现错误的人:
确保您将密钥添加到正确的 Info.plist。 xCode 的较新版本,显然有 3 Info.plist.
其中一个位于包含您的应用程序名称的文件夹下,这为我解决了问题。
第二个在 YourappnameTests 下,第三个在 YourappnameUITests 下。
希望对您有所帮助。
如果您使用的是 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 的回答
我检查了 plist,发现它不起作用,只有在 "project" 信息中,您需要添加 "Privacy - Camera ....",然后它应该可以工作。希望能帮到你。
我遇到了同样的问题,但找不到解决方案。 Mark90 是对的,有很多 info.plist 个文件,您应该编辑正确的。转到 Project,在 TARGETS select 项目(不是测试)下,在选项卡栏 select Info 中并在“Custom iOS Target Properties".
对于那些像我一样正在测试 Ionic 项目并且必须添加隐私权限密钥的人,请确保将它们添加到正确的 .plist
文件中。找到它的最佳方法是使用 Xcode 搜索,带有您的应用程序名称的就是那个。我分享了一个截图,右边有一圈Info.plist
你需要修改。我浪费时间修改了库文件夹中的另一个,导致了关于隐私的错误。希望此屏幕截图有所帮助。在我的例子中,我在文件底部单击 +
并滚动直到找到 Privacy - Camera usage description
,我插入了简短描述 used for Qrcodes
并开始工作
使用 iOS 10.0
上次测试版。我曾尝试在我的应用程序中使用相机扫描条形码,但由于此运行时错误而崩溃。
This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
把这个key放到plist里了,还是死机了?
您必须在 info.plist 中添加下面的键。
NSCameraUsageDescription
要么
Privacy - Camera usage description
并添加使用说明。
这里有详细的截图link
由于 Apple 更改了您访问 iOS 10
中任何用户私有数据类型的方式。
您需要将“Privacy - Camera usage description
”键添加到您的应用程序的 Info.plist
及其适用于您的应用程序的使用信息,如下例中我提供的我曾经扫描过条形码。
如需了解更多信息,请查看以下屏幕截图。
在 iOS10 之后,您必须定义并提供您的应用程序在 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
您可以在thislink中获取详细信息。
或者打开 Info.plist 作为源代码并添加:
<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
我在尝试使用相机时遇到的另一个实例是,即使在添加 "Camera Usage Description" 之后,它仍然忙于提供相同的 _CRASHING_DUE_TO_PRIVACY
崩溃。在无法从调用堆栈中获取任何有形信息后,切换到 "Organizer" 并查看设备上的崩溃报告。我发现它实际上是在抱怨缺少 "Microphone Usage Description" 导致的隐私问题。我添加了它并摆脱了这种神秘的故障。
使用这些原始值并复制到 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>
xcode UI 从一个版本到下一个版本发生了一些变化,所以如果有帮助,您可以在这里更新 9.0 beta 4 的 plist
项目 -> 目标 -> 信息
您可以通过向您的应用程序的 Info.plist 添加一个使用密钥以及一个目的字符串来做到这一点。 NSCamera使用说明 指定您的应用访问设备相机的原因
对于那些即使您将正确的密钥添加到 Info.plist 中仍然出现错误的人:
确保您将密钥添加到正确的 Info.plist。 xCode 的较新版本,显然有 3 Info.plist.
其中一个位于包含您的应用程序名称的文件夹下,这为我解决了问题。
第二个在 YourappnameTests 下,第三个在 YourappnameUITests 下。
希望对您有所帮助。
如果您使用的是 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 的回答
我检查了 plist,发现它不起作用,只有在 "project" 信息中,您需要添加 "Privacy - Camera ....",然后它应该可以工作。希望能帮到你。
我遇到了同样的问题,但找不到解决方案。 Mark90 是对的,有很多 info.plist 个文件,您应该编辑正确的。转到 Project,在 TARGETS select 项目(不是测试)下,在选项卡栏 select Info 中并在“Custom iOS Target Properties".
对于那些像我一样正在测试 Ionic 项目并且必须添加隐私权限密钥的人,请确保将它们添加到正确的 .plist
文件中。找到它的最佳方法是使用 Xcode 搜索,带有您的应用程序名称的就是那个。我分享了一个截图,右边有一圈Info.plist
你需要修改。我浪费时间修改了库文件夹中的另一个,导致了关于隐私的错误。希望此屏幕截图有所帮助。在我的例子中,我在文件底部单击 +
并滚动直到找到 Privacy - Camera usage description
,我插入了简短描述 used for Qrcodes
并开始工作