Вопрос проверяет знание способов двустороннего общения между нативным кодом и веб-контентом.
iOS-код может взаимодействовать с WebView через JavaScript, message handlers и навигационные делегаты. Можно выполнять JS-код, получать сообщения из HTML и отслеживать переходы. Эти механизмы покрывают большинство сценариев интеграции. Выбор зависит от сложности взаимодействия.
Для интеграции веб-контента с нативным приложением WebKit предоставляет несколько механизмов взаимодействия.
Используется для:
изменения DOM
получения данных
вызова JS-функций
webView.evaluateJavaScript("getUserId()")
Определение:
Message handler — это канал передачи данных из JavaScript в iOS.
JS-код:
window.webkit.messageHandlers.event.postMessage("data")
iOS-код:
userContentController.add(self, name: "event")
Через WKNavigationDelegate можно:
отслеживать загрузку страниц
блокировать переходы
анализировать URL
Обычно:
JS ↔ iOS — для данных и событий
Делегаты — для навигации
URL-схемы — для простых сценариев
WKWebView предоставляет гибкий набор инструментов для двустороннего взаимодействия между вебом и нативным кодом.