在Crashlytics中,我可以看到iOS 10的用户经常会发生这种崩溃。然而,当我使用iPhone 7/10.2在模拟器中进行测试时,我无法再现崩溃。在我的plist里,我已经有了字符串
NSCalendarsUsageDescription,NSMicrophoneUsageDescription和NSPhotoLibraryUsageDescription。
下面是来自Crashlytics的堆栈:
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有什么线索可以复制或修复吗?我确实允许用户访问联系人,但当我在模拟器中测试该功能时,没有提示我提供任何许可。然而,当用户从我的应用程序访问相机时,模拟器确实会提示我获得许可。这让我认为访问联系人不需要字符串。
发布于 2017-03-14 23:37:52
我不得不在plist中为NSCameraUsageDescription添加一个字符串,因为用户可以拍照。
发布于 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时仍然值得添加密钥。
发布于 2018-08-13 05:23:06
让我们理解两件事。
在plist文件中有许多隐私密钥,例如相机使用、联系人使用位置使用、脸id使用等。如果您错过了其中的任何一个键,并尝试使用这些功能,您将得到一个崩溃,所以使用键和说明,以避免崩溃。
第二件事是,特别是对于NSPhotoLibraryUsageDescription,,如果您使用的密钥来自于iOS 6之上的和iOS 11.3以下的,那么您将不会有任何崩溃,但是在iOS 11.3和以后的之后,您需要再添加一个键,即NSPhotoLibraryAddUsageDescription.
同时,如果您的应用程序是iOS 8或9或更高版本的iOS 11.3或更高版本,您可以使用这两个键。
https://stackoverflow.com/questions/42709692
复制相似问题