#ios #swift #wkwebview #thumbnails
#iOS #swift #wkwebview #эскизы
Вопрос:
Разработка расширения миниатюр для пользовательского типа файла в моем приложении для iOS. Я использую WKWebView для отображения строки HTML, а затем делаю снимок WKWebView для использования в качестве уменьшенного изображения. Отлично работает на симуляторах. Однако не завершается при запуске на реальном устройстве.
Вот пример кода, который можно использовать для дублирования сбоя.
Вот код:
let thumbFileView = WKWebView(frame: frame)
thumbFileView.navigationDelegate = self
thumbFileView.pageZoom = scale
thumbFileView.layoutIfNeeded()
thumbFileView.loadHTMLString(thumbFile.asHtml, baseURL: nil)
Изображение миниатюр идеально подходит для симулятора, но на реальном устройстве в журналах происходит сбой:
2020-12-08 11:01:30.191156-0700 ThumbFileThumbnail[35519:906998] [] networkd_settings_setup_notify_watch notify_register_dispatch(com.apple.system.networkd.settings) [status 9] failed
2020-12-08 11:01:30.205445-0700 ThumbFileThumbnail[35519:906998] [] networkd_settings_setup_notify_watch notify_register_dispatch(com.apple.system.networkd.settings) [status 9] failed, dumping backtrace:
[arm64] libnetcore-2288.42.1
0 libnetwork.dylib 0x00000001a2ce1658 __nw_create_backtrace_string 116
1 libnetwork.dylib 0x00000001a2c6ffdc C67A2D71-4415-3F82-9399-65C3956520AE 5832668
2 libnetwork.dylib 0x00000001a2c6f6c0 C67A2D71-4415-3F82-9399-65C3956520AE 5830336
3 libnetwork.dylib 0x00000001a2a777d0 C67A2D71-4415-3F82-9399-65C3956520AE 3766224
4 libnetwork.dylib 0x00000001a2c26408 nw_path_create_evaluator_for_endpoint_no_evaluate 544
5 libnetwork.dylib 0x00000001a2c25ee0 nw_path_create_evaluator_for_endpoint 84
6 Network 0x00000001b5a063e0 2FB89D76-EA38-3B43-BCD1-E0C7EE9B9012 1180640
7 Network 0x00000001b5a058b4 2FB89D76-EA38-3B43-BCD1-E0C7EE9B9012 1177780
8 libdispatch.dylib 0x00000001a18c0280 6C143C51-288F-3CD0-84DD-17B9A0AAEE62 397952
9 libdispatch.dylib 0x00000001a18642f4 6C143C51-288F-3CD0-84DD-17B9A0AAEE62 21236
10 Network 0x00000001b5a05888 2FB89D76-EA38-3B43-BCD1-E0C7EE9B9012 1177736
11 NetworkExtension 0x00000001b268a4e4 4F673F38-E238-37C5-9B26-2A540CB429B9 357604
12 WebKit 0x00000001ad9a8334 19789FD9-1098-37B7-B639-9E4F0EB867D6 2847540
13 WebKit 0x00000001ada0bdc8 19789FD9-1098-37B7-B639-9E4F0EB867D6 3255752
14 WebKit 0x00000001ada0ba20 19789FD9-1098-37B7-B639-9E4F0EB867D6 3254816
15 WebKit 0x00000001ad6fda9c 19789FD9-1098-37B7-B639-9E4F0EB867D6 51868
16 ThumbFileThumbnail 0x00000001044f4ee8 $s18ThumbFileThumbnail0abC9GeneratorC04loadaB4View3for2in5scaleSo05WKWebF0CAA0aB0V_So6CGRectV12CoreGraphics7CGFloatVtF 704
17 ThumbFileThumbnail 0x00000001044f42a4 $s18ThumbFileThumbnail0abC9GeneratorC20provideSnapshotImage3for5scale5frame10completionyAA0aB0V_12CoreGraphics7CGFloatVSo6CGRectVySo7UIImageCSgctFyycfU_ 204
18 ThumbFileThumbnail 0x00000001044f44e0 $sIeg_IeyB_TR 52
19 libdispatch.dylib 0x00000001a18bf298 6C143C51-288F-3CD0-84DD-17B9A0AAEE62 393880
20 libdispatch.dylib 0x00000001a18c0280 6C143C51-288F-3CD0-84DD-17B9A0AAEE62 397952
21 libdispatch.dylib 0x00000001a186f05c 6C143C51-288F-3CD0-84DD-17B9A0AAEE62 65628
22 CoreFoundation 0x00000001a1c075d0 96F8386D-D88A-3C89-A323-A17975C3317F 632272
23 CoreFoundation 0x00000001a1c01a78 96F8386D-D88A-3C89-A323-A17975C3317F 608888
24 CoreFoundation 0x00000001a1c00b90 CFRunLoopRunSpecific 572
25 Foundation 0x00000001a2e1e7f8 F1BC26A1-F5BB-36F7-A65A-D5F232DBF902 30712
26 Foundation 0x00000001a2e4f964 F1BC26A1-F5BB-36F7-A65A-D5F232DBF902 231780
27 libxpc.dylib 0x00000001e76af1c4 E3552D23-ADFB-36FE-B7D0-B23090553C49 86468
28 libxpc.dylib 0x00000001e76b13bc xpc_main 176
29 Foundation 0x00000001a2e51b78 F1BC26A1-F5BB-36F7-A65A-D5F232DBF902 240504
30 PlugInKit 0x00000001cefc28c0 __PLUGINKIT_CALLING_OUT_TO_CLIENT_SUBSYSTEM_FOR_BEGINUSING__ 35616
31 PlugInKit 0x00000001cefc2530 __PLUGINKIT_CALLING_OUT_TO_CLIENT_SUBSYSTEM_FOR_BEGINUSING__ 34704
32 PlugInKit 0x00000001cefc2cb8 __PLUGINKIT_CALLING_OUT_TO_CLIENT_SUBSYSTEM_FOR_BEGINUSING__ 36632
33 ExtensionKit 0x00000001a5f514e0 EXExtensionMain 80
34 Foundation 0x00000001a2f8d1cc NSExtensionMain 192
35 libdyld.dylib 0x00000001a18df588 E31C0887-C999-3047-9B80-203248EC2396 5512
Из-за установки точки останова проблем во время выполнения нарушающая строка кода:
thumbFileView.loadHTMLString(thumbFile.asHtml, baseURL: nil)
Поскольку html содержит URL-адрес изображения, это, по-видимому, указывает на некоторое ограничение, которое iOS накладывает на расширение миниатюр, блокируя его доступ к сети. Это видно из журнала сбоев и из стека на момент возникновения проблемы.
Я изучил документацию Apple по NSExtensionAttributes и не могу найти ничего, что могло бы решить эту проблему с разрешениями.
Вот атрибуты NSExtensionAttributes для расширения миниатюр:
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>QLSupportedContentTypes</key>
<array>
<string>com.raywenderlich.RazeThumb.ThumbFile</string>
</array>
<key>QLThumbnailMinimumDimension</key>
<integer>0</integer>
</dict>
Приветствуются любые идеи о том, как заставить это работать на реальных устройствах, а не только на симуляторе.
Комментарии:
1. Можете ли вы предоставить демонстрационный проект, включающий тестовые данные? Спасибо
2. Пример мог бы помочь. Я делаю что-то подобное, и это отлично работает для меня на устройствах.
3. Вы должны, по крайней мере, предоставить HTML-файл. По вашим словам, ваше приложение разбилось, потому что в HTML-файле была ссылка на изображение. Значит, файлы без ссылки на изображение работали?
4. Я добавил ссылку для скачивания, чтобы опробовать программу. Чтобы увидеть сбой, вы должны сначала запустить приложение, чтобы загрузить его на свое устройство, затем выбрать расширение миниатюр и запустить его. Прокрутите вниз до «greenthumb.thumb», пользовательского типа файла, чтобы увидеть сбой.