Apple предоставляет в WebKit
механизм для отправки сообщений из вашего HTML-кода на собственный:
На вашей HTML-странице вызовите:
window.webkit.messageHandlers.messageHandler.postMessage("Pass your data here...");
, где messageHandler
- этоназвание сообщения, полученного в вашем коде iOS. "Pass your data here..."
- это данные, передаваемые iOS через сообщение messageHandler
.
В вашем коде iOS:
Добавьте обработчик сообщения, используя метод add(_:name:)
WKUserContentController, как показано ниже:
webView.configuration.userContentController.add(self, name: "messageHandler")
Наконец, в вашем коде ViewController
реализуйте метод WKScriptMessageHandler userContentController:didReceiveScriptMessage:
, например:
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "messageHandler" {
// Your Message handler code goes here...
}
Согласно документации Apple по методу add(_:name:)
:
Добавлениеобработчик сообщений сценария с именем name заставляет функцию JavaScript window.webkit.messageHandlers.name.postMessage (messageBody) быть определена во всех фреймах во всех веб-представлениях, использующих контроллер содержимого пользователя.
Ссылка на документацию Apple