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) {
};
Updated 11 months ago