首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >__CRASHING_DUE_TO_PRIVACY_VIOLATION__

__CRASHING_DUE_TO_PRIVACY_VIOLATION__
EN

Stack Overflow用户
提问于 2017-03-10 03:31:33
回答 7查看 15.4K关注 0票数 21

在Crashlytics中,我可以看到iOS 10的用户经常会发生这种崩溃。然而,当我使用iPhone 7/10.2在模拟器中进行测试时,我无法再现崩溃。在我的plist里,我已经有了字符串

NSCalendarsUsageDescription,NSMicrophoneUsageDescription和NSPhotoLibraryUsageDescription。

下面是来自Crashlytics的堆栈:

代码语言:javascript
运行
复制
Crashed: com.apple.root.default-qos
0  libsystem_kernel.dylib         0x183765d74 __abort_with_payload + 8
1  libsystem_kernel.dylib         0x18376249c <redacted> + 100
2  libsystem_kernel.dylib         0x1837624c8 abort_with_payload + 10
3  TCC                            0x1869d6328 __TCCAccessRequest_block_invoke_2.80 + 258
4  TCC                            0x1869d6224 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 702
5  TCC                            0x1869d9330 __tccd_send_block_invoke + 348
6  libxpc.dylib                   0x18386afcc _xpc_connection_reply_callout + 80
7  libxpc.dylib                   0x18386af3c _xpc_connection_call_reply + 40
8  libdispatch.dylib              0x1836221bc _dispatch_client_callout + 16
9  libdispatch.dylib              0x183630a4c _dispatch_queue_override_invoke + 732
10 libdispatch.dylib              0x18363234c _dispatch_root_queue_drain + 572
11 libdispatch.dylib              0x1836320ac _dispatch_worker_thread3 + 124
12 libsystem_pthread.dylib        0x18382b2a0 _pthread_wqthread + 1288
13 libsystem_pthread.dylib        0x18382ad8c start_wqthread + 4

有什么线索可以复制或修复吗?我确实允许用户访问联系人,但当我在模拟器中测试该功能时,没有提示我提供任何许可。然而,当用户从我的应用程序访问相机时,模拟器确实会提示我获得许可。这让我认为访问联系人不需要字符串。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-03-14 23:37:52

我不得不在plist中为NSCameraUsageDescription添加一个字符串,因为用户可以拍照。

票数 13
EN

Stack Overflow用户

发布于 2018-04-12 08:45:16

如果您在iPhone X上看到这些崩溃,并且使用了Touch ID/Face ID,原因可能是您的Info.plist中缺少NSFaceIDUsageDescription键。密钥是在iOS 11中添加的,看起来在iOS 11.3之后它可能已经成为强制性的了,因为在iPhone 11.3发布之后,在iPhone X上我看到了大量的崩溃。苹果这里含糊地记录了这一点

NSFaceIDUsageDescription (String - iOS)。这个键可以让您描述应用程序使用Face的原因。 重要的是:为了保护用户隐私,一个连接在iOS 11上或之后的iOS应用程序,如果硬件支持它,它将访问Face,它必须静态声明这样做的意图。将NSFaceIDUsageDescription键包含在应用程序的Info.plist文件中,并为该键提供一个用途字符串。如果应用程序试图在没有相应用途字符串的情况下访问Face,则应用程序可能会退出。 iOS 11及更高版本支持此键。

有趣的是,我无法在我的开发iOS X上的iPhone 11.3上再现崩溃,也许它在调试或TestFlight构建中的行为有所不同。如果我们相信苹果的文档,在应用程序中使用Face时仍然值得添加密钥。

票数 31
EN

Stack Overflow用户

发布于 2018-08-13 05:23:06

让我们理解两件事。

在plist文件中有许多隐私密钥,例如相机使用、联系人使用位置使用、脸id使用等。如果您错过了其中的任何一个键,并尝试使用这些功能,您将得到一个崩溃,所以使用键和说明,以避免崩溃。

第二件事是,特别是对于NSPhotoLibraryUsageDescription,,如果您使用的密钥来自于iOS 6之上的和iOS 11.3以下的,那么您将不会有任何崩溃,但是在iOS 11.3和以后的之后,您需要再添加一个键,即NSPhotoLibraryAddUsageDescription.

同时,如果您的应用程序是iOS 8或9或更高版本的iOS 11.3或更高版本,您可以使用这两个键。

所有键的引用

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42709692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档