iOS崩溃:__因隐私侵犯而崩溃__。

5

这是我的崩溃报告的一部分。

#0. com.apple.contacts.store
0  libsystem_kernel.dylib         0x18c34d1c4 semaphore_wait_trap + 8
1  libdispatch.dylib              0x18c2387d8 _dispatch_semaphore_wait_slow + 216
2  Contacts                       0x195b99584 +[CNAuthorization requestAccessWithTimeout:entityType:] + 224
3  Contacts                       0x195b6288c -[CNiOSAddressBookDataMapper requestAccessForEntityType:error:] + 40
4  Contacts                       0x195b733fc -[CNDataMapperContactStore unifiedContactCountWithError:] + 60
5  ContactsUI                     0x196b7603c -[CNContactStoreSnapshot countOf_contacts] + 144
6  ContactsUI                     0x196b78820 -[CNContactStoreSnapshot prepareEnoughContacts] + 244
7  libdispatch.dylib              0x18c2261bc _dispatch_client_callout + 16
8  libdispatch.dylib              0x18c2337f0 _dispatch_barrier_sync_f_invoke + 84
9  ContactsUI                     0x196b7a9ec -[CNContactStoreDataSource _reloadSynchronously:] + 180
10 ContactsUI                     0x196b7af5c -[CNContactStoreDataSource currentSnapshot] + 64
11 ContactsUI                     0x196b79b80 -[CNContactStoreDataSource contacts] + 24
12 ContactsUI                     0x196b2045c -[CNContactListViewController _updateCountStringNow:] + 68
13 ContactsUI                     0x196b1f210 -[CNContactListViewController loadView] + 408
14 UIKit                          0x1932525bc -[UIViewController loadViewIfRequired] + 184
15 UIKit                          0x19330c2bc -[UINavigationController _layoutViewController:] + 72
16 UIKit                          0x19330c194 -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 416
17 UIKit                          0x19330b4dc -[UINavigationController _startTransition:fromViewController:toViewController:] + 140
18 UIKit                          0x19330af28 -[UINavigationController _startDeferredTransitionIfNeeded:] + 856
19 UIKit                          0x19330aadc -[UINavigationController __viewWillLayoutSubviews] + 64
20 UIKit                          0x19330aa40 -[UILayoutContainerView layoutSubviews] + 188
21 UIKit                          0x1934e3fdc _runAfterCACommitDeferredBlocks + 292
22 UIKit                          0x1934d5d50 _cleanUpAfterCAFlushAndRunDeferredBlocks + 560
23 UIKit                          0x1932450b4 _afterCACommitHandler + 168
24 CoreFoundation                 0x18d34a0c0 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
25 CoreFoundation                 0x18d347cf0 __CFRunLoopDoObservers + 372
26 CoreFoundation                 0x18d348180 __CFRunLoopRun + 1024
27 CoreFoundation                 0x18d2762b8 CFRunLoopRunSpecific + 444
28 GraphicsServices               0x18ed2a198 GSEventRunModal + 180
29 UIKit                          0x1932bd7fc -[UIApplication _run] + 684
30 UIKit                          0x1932b8534 UIApplicationMain + 208
31 MainApp                        0x1001365e8 main (main.m:16)
32 libdispatch.dylib              0x18c2595b8 (Missing)

经过我的研究,似乎是由于隐私政策问题导致com.apple.contacts.store崩溃。问题在于我根本没有使用联系人存储。这只发生在一个用户身上。
2个回答

15
如果您使用启用了dataDetectorTypesUITextView,则用户可以通过在电话号码上进行力按触摸手势来打开上下文菜单(由系统提供)。从这个菜单中,可以创建一个带有此电话号码的新联系人,或将电话号码添加到现有联系人中(请参见屏幕截图)。一旦用户点击“添加到联系人”(Zu Kontakt hinzufügen),应用程序将尝试请求访问地址簿。如果您的Info.plist中没有NSContactsUsageDescription,它将崩溃。

enter image description here


欢迎!我在我们的应用程序中花了一些时间才弄清楚这个问题,所以我认为值得分享。 - plu
太棒了!我们现在面临的问题是用户可能会拒绝访问联系人,这种情况下它仍然会崩溃。有什么想法吗? - Guy Kogus
1
感谢您的回答!这是苹果完全荒谬的逻辑...数据检测功能已经内置于SDK中。为什么要强制开发人员为默认的SDK行为添加隐私使用字符串?至少应该有清晰的文档说明。 - roperklacks
1
我同意,这明显是SDK中的一个错误。如果NSContactsUsageDescription缺失,它应该隐藏按钮。 - plu

0

但我不是。我在想可能是Crashlytics出了问题。 - Weakman10122
你正在使用的另一个框架可能也在使用它,这将导致相同的行为。 - karnett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接