Я хочу перенести свое гибридное приложение для iOS из UIWebView в WKWebView, так как первое устарело. Есть несколько похожих на этот вопрос вопросов о переполнении стека, на которые уже дан ответ, но эти вопросы были сосредоточены на более простой теме простого отображения веб-представления без учета загрузки локальных файлов или двухстороннего взаимодействия, необходимого между Целью Cобертка и код Javascript для гибридного приложения, обеспечивающего любую функциональность.
До сих пор я установил, что мне нужно сделать следующее
Заменить инструкцию импорта для UIKitс WebKit.
Перед созданием wkwebview необходимо создать объект конфигурации и установить для его ключа allowFileAccessFromFileURLs значение TRUE.
После созданияwkwebview, устанавливая его navigationDelegate и его UIDelegate на self.
При загрузке URL-адреса местоположения файла html / ccc / js, определяя allowReadAccessToURL для удаления последнего компонента пути (который я считаюфайл: //)
Установить рабочий деньwebview как вспомогательное представление основного представления (я думаю, что это не требуется в UIWebView)
Замена существующего канала связи с кода javascrtipt на код Objective C, который использовал "shouldStartLoadWithRequest "путем создания обработчика сообщений сценария в объекте конфигурации wkwebview, упомянутого в пункте 2 выше, и последующего использования этого обработчика сообщений для вызова обработки, которая раньше выполнялась" shouldStartLoadWithRequest ".
Заменавсе существующие каналы связи к коду javascript из кода Objective C, который использовал "stringByEvaluatingJavaScriptFromString" с "defineJavaScript", для которого теперь требуется обработчик завершения, который может быть установлен равным nil, поскольку я не использую никаких значений обратного вызова.
Добавление решения, позволяющего отображать клавиатуру без выбора пользователем поля ввода текста. Лучшее, что я могу видеть на данный момент, это Программно сфокусироваться на форме в веб-представлении (WKWebView) . Я несколько обеспокоен тем, что, похоже, нужно менять каждую версию IOS.
Решение проблем CORS. Я понимаю, что WKWebView намного строже в реализации загрузки удаленных файлов с других URL-адресов, чем был UIWebView, но я не уверен, есть ли необходимость в белом списке также загружать локальные файлы.
Если кто-нибудь знает контрольный список вещей, которые необходимо изменить с помощью советов / примеров с точными деталями, или может предоставить такой ответ, который будет превосходным.
Кроме того, я хотел быпродолжать поддерживать пользователей до IOS 11, сохранив UIWebView для этих пользователей, так как я считаю, что у WKWebView были проблемы в этих более ранних версиях. Кто-нибудь знает, приведет ли это к решению каких-либо дополнительных проблем, и если да, то как?