【问题标题】:iOS Crash: __CRASHING_DUE_TO_PRIVACY_VIOLATION__iOS 崩溃:__CRASHING_DUE_TO_PRIVACY_VIOLATION__
【发布时间】:2017-06-12 10:25:48
【问题描述】:

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

#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 由于隐私政策而导致崩溃。问题是我根本没有使用联系人商店。这只发生在一位用户身上。

【问题讨论】:

    标签: ios crash crash-reports


    【解决方案1】:

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

    【讨论】:

    • 欢迎您!我花了一段时间才在我们的应用程序中弄清楚这一点,所以我认为它值得分享。
    • 太棒了!我们现在面临的问题是用户可能拒绝访问联系人,在这种情况下它仍然会崩溃。有什么想法吗?
    • 感谢您的回答!这完全是 Apple 荒谬的逻辑...... SDK 中内置了数据检测器功能。为什么要强制开发人员为默认 SDK 行为添加隐私使用字符串?至少应该清楚地记录在案。
    • 我同意,这显然是 SDK 中的一个错误。如果缺少NSContactsUsageDescription,它应该隐藏按钮。
    【解决方案2】:

    看起来您正在使用 Apple 的 ContactsUI 框架,它要求您在 info.plist 中包含 NSContactsUsageDescription 以征求用户的许可。更多信息请参见隐私:https://developer.apple.com/reference/contacts

    https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW14

    【讨论】:

    • 但我不是。我在想可能是 crashlytics 搞砸了。
    • 您正在使用的另一个框架可能正在使用它,这将导致相同的行为。
    猜你喜欢
    • 2017-01-27
    • 2017-07-31
    • 2011-08-26
    • 2018-03-27
    • 2021-04-17
    • 2013-05-13
    • 2018-12-02
    • 2014-01-18
    • 1970-01-01
    相关资源
    最近更新 更多