произошел сбой приложения из-за отсутствия NSPhotoLibraryAddUsageDescription, но мое приложение никогда не использует фотографии - PullRequest
0 голосов
/ 23 ноября 2018

Я вижу несколько сообщений о сбоях, в которых говорится

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 голосов
/ 23 ноября 2018

Мне удалось воспроизвести аварию!Вот сделка: мое приложение содержит веб-просмотр.Если пользователь нажимает на изображение в этом веб-представлении, появляется пункт меню Сохранить.Если пользователь нажимает Сохранить, нам нужно разрешение;если в Info.plist нет строки конфиденциальности, в этот момент происходит сбой (и, если она есть, мы получаем диалог авторизации).

На мой взгляд, это iOSошибка.Я никогда не хотел, чтобы пользователь делал это;это просто особенность веб-просмотров.Таким образом, процесс сохранения из веб-представления в библиотеку фотографий фактически не выполняется;это пользователь , который делает это, а не мое приложение.И пользователю не нужно разрешение;это пользователь, который нажал на изображение, а затем нажал кнопку Сохранить.Невозможно, чтобы этот сценарий произошел без того, чтобы пользователь сделал несколько преднамеренных шагов, ни одно из которых не затрагивает мое приложение напрямуюЯ сообщу об этом Apple.

...