Communicate between Javascript & WKWebView

Send data from Javascript to iOS code

Configure a WKUserContentController on the WKWebView to receive data

let contentController = webView.configuration.userContentController
contentController.add(self, name: "messageHandler")
extension ArticleViewController: WKScriptMessageHandler{
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
       	guard let dict = message.body as? [String : AnyObject] else {
            return
        }

        print(dict)
    }
}

Send the data from Javascript

if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.messageHandler) {
    window.webkit.messageHandlers.messageHandler.postMessage({
        "message": ""
    });
}

Send data from iOS to Javascript code

Execute Javascript code on the webview to pass data to the web context.

let script = "window.updateFromNative(" + eventValue + ")"
webView.evaluateJavaScript(script) { (result, error) in
	if let error {
		print(error)
	}
}

Create a Javascript method updateFromNative to receive the data passed

window.updateFromNative = function (nativeData) {

};