由于缺少 NSPhotoLibraryAddUsageDescription 而报告应用程序崩溃,但我的应用程序从不使用任何照片
app crashes reported due to missing NSPhotoLibraryAddUsageDescription, but my app never uses any photos
我看到一些崩溃报告说
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: TCC, This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value explaining to the user how the app uses this data.
一切都非常有趣,尤其是因为 我的应用程序永远不会出于任何原因靠近照片库。那么这里到底发生了什么,TCC 到底是什么?
我非常愿意添加此密钥,但我无法解释为什么需要它,所以我无法提供任何有意义的文本!
问题仅在 iOS 12.1 中出现,尽管这可能不是有意义的数据,因为您无法证明是否定的。我当然怀疑 iOS 错误,并且会报告这个,但我很好奇是否有其他人看到过这种奇怪的现象。
这里还有一些典型的崩溃报告:
Triggered by Thread: 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]
我能够重现崩溃!事情是这样的:我的应用程序包含一个网络视图。如果用户在该 Web 视图中按下图像,则会出现“保存”菜单项。如果用户点击保存,我们需要权限;如果 Info.plist 中没有隐私字符串,我们会在那一刻崩溃(如果有,我们会得到授权对话框)。
在我看来,这是一个 iOS 错误。我从来没有打算让用户这样做;这只是网络视图的一个功能。因此,从 Web 视图保存到照片库的操作实际上是在进程外的;是 user 在做这件事,而不是我的应用程序。并且用户不需要许可;是用户点击了图像,然后点击了“保存”按钮。如果用户不进行多次有意的操作,这种情况就不可能发生,其中 none 直接涉及我的应用程序。我会向 Apple 报告此事。
我看到一些崩溃报告说
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: TCC, This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value explaining to the user how the app uses this data.
一切都非常有趣,尤其是因为 我的应用程序永远不会出于任何原因靠近照片库。那么这里到底发生了什么,TCC 到底是什么?
我非常愿意添加此密钥,但我无法解释为什么需要它,所以我无法提供任何有意义的文本!
问题仅在 iOS 12.1 中出现,尽管这可能不是有意义的数据,因为您无法证明是否定的。我当然怀疑 iOS 错误,并且会报告这个,但我很好奇是否有其他人看到过这种奇怪的现象。
这里还有一些典型的崩溃报告:
Triggered by Thread: 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]
我能够重现崩溃!事情是这样的:我的应用程序包含一个网络视图。如果用户在该 Web 视图中按下图像,则会出现“保存”菜单项。如果用户点击保存,我们需要权限;如果 Info.plist 中没有隐私字符串,我们会在那一刻崩溃(如果有,我们会得到授权对话框)。
在我看来,这是一个 iOS 错误。我从来没有打算让用户这样做;这只是网络视图的一个功能。因此,从 Web 视图保存到照片库的操作实际上是在进程外的;是 user 在做这件事,而不是我的应用程序。并且用户不需要许可;是用户点击了图像,然后点击了“保存”按钮。如果用户不进行多次有意的操作,这种情况就不可能发生,其中 none 直接涉及我的应用程序。我会向 Apple 报告此事。