由于缺少NSPhotoLibraryAddUsageDescription而导致应用程序崩溃,但我的应用程序从未使用过任何照片

时间:2018-11-23 00:42:54

标签: ios crash privacy

我看到一些崩溃报告说

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
  

终止原因:TCC,此应用程序已崩溃,因为它尝试访问没有使用说明的隐私敏感数据。该应用程序的Info.plist必须包含一个NSPhotoLibraryAddUsageDescription键,该键具有一个字符串值,向用户解释该应用程序如何使用此数据。

所有这些都非常有趣,尤其是因为我的应用出于任何原因永远都不会走到照片库附近。那么这到底是怎么回事,什么是TCC?

我非常愿意添加此密钥,但是我没有解释为什么会需要它,因此我无法提供任何有意义的文本!

问题仅在iOS 12.1中出现,尽管由于您无法证明是负面数据,但这可能对数据没有意义。我当然怀疑是iOS的错误,并将报告此错误,但是我很好奇是否有人见过这种奇怪现象。

以下是典型的崩溃报告:

  

由线程触发:3

[跳过线程0和1]

Thread 2 name:
Thread 2:
0   libsystem_kernel.dylib          0x000000019ffe3f0c semaphore_wait_trap + 8
1   libdispatch.dylib               0x000000019fe32f8c _dispatch_sema4_wait$VARIANT$mp + 24 (lock.c:134)
2   libdispatch.dylib               0x000000019fe33a10 _dispatch_semaphore_wait_slow + 136 (semaphore.c:132)
3   AssetsLibraryServices           0x00000001ade2d140 __79-[PLPrivacy _isPhotosAccessAllowedWithScope:forceHandler:accessAllowedHandler:]_block_invoke_2 + 412 (PLPrivacy.m:183)
4   AssetsLibraryServices           0x00000001ade138b4 __pl_dispatch_async_block_invoke + 36 (PLDispatchHelpers.m:23)
[skipping the rest]

Thread 3 Crashed:
0   libsystem_kernel.dylib          0x000000019ffeddf8 __abort_with_payload + 8
1   libsystem_kernel.dylib          0x000000019ffe7838 abort_with_payload_wrapper_internal + 100 (terminate_with_reason.c:71)
2   libsystem_kernel.dylib          0x000000019ffe7868 abort_with_payload + 12 (terminate_with_reason.c:93)
3   TCC                             0x00000001a32aea70 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 204 (TCC.c:372)
4   TCC                             0x00000001a32ae9a4 __TCCAccessRequest_block_invoke.77 + 708 (TCC.c:508)
5   TCC                             0x00000001a32b2a90 __tccd_send_message_block_invoke + 276 (TCC.c:220)
[skipping the rest]

1 个答案:

答案 0 :(得分:3)

我能够重现崩溃!这是交易:我的应用程序包含一个Web视图。如果用户在该Web视图中按下图像,则会出现“保存”菜单项。如果用户点击“保存”,则需要我们的许可;如果 Info.plist 中没有隐私字符串,我们将在那一刻崩溃(如果有隐私字符串,则将显示授权对话框)。

我认为这是一个iOS错误。我从不打算让用户这样做。这只是网络视图的功能。因此,从Web视图保存到照片库的操作实际上已无法进行。是 user 而不是我的应用。并且用户不需要许可;是用户点击图像,然后点击“保存”按钮。如果用户没有做出多次有意举动,而没有任何举动直接涉及我的应用程序,那么这种情况就不可能发生。我将向苹果报告。