当我在真实设备上运行我的项目时,一切正常。
但是当我尝试在模拟器(iOS 10,iPhone 7和iPhone 6)上运行它时,应用程序崩溃,调试器输出中没有调试器消息。
崩溃的线程看起来像这样
我想知道
是什么TCC` CRASHING_DUE_TO_PRIVACY_VIOLATION
意味着,以及如何解决问题?
答案 0 :(得分:30)
您使用的是需要用户批准的功能(如相机,位置等)吗? TCC处理对此类资源的访问,__CRASHING_DUE_TO_PRIVACY_VIOLATION__
中的崩溃通常意味着您无法满足使用该功能的要求。
确保您拥有Info.plist文件中任何这些功能的使用说明密钥。 iOS 10现在绝对要求您提供如下描述:
<key>NSCameraUsageDescription</key>
<string>For taking selfies!</string>
由于您之前已授予权限,因此可能正在您的设备上运行。如果您删除应用程序并等待24小时(或安装在之前从未安装过应用程序的其他设备上),您可能会在设备上看到相同的内容。 (不同的服务对于权限是否快速消失或者保存一段时间以允许重新安装具有不同的策略。)
更新:
有一个nice Technical Q&A page on developer.apple.com描述了需要使用描述的框架,并列出了每个框架和所涉及的类/函数/选择器的相关密钥。
答案 1 :(得分:3)
除了@ russbishop的回答:
您也需要为访问图库做同样的事情。 类似的东西:
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) needs access to use your photo library</string>
PS: 与你的情况完全相反,我在设备上遇到了同样的崩溃,但没有在模拟器上。
答案 2 :(得分:2)
除上述所有答案外:
对我来说,它是相机和麦克风,NSCameraUsageDescription和NSMicrophoneUsageDescription。
如果你想录制视频,你应该添加它们。
Thanx Apple。