Apple provides a mechanism in WebKit
to post-messages from your HTML to native:
In your HTML page, call:
window.webkit.messageHandlers.messageHandler.postMessage("Pass your data here...");
where, messageHandler
is the name of the message received in your iOS code. "Pass your data here..."
is the data passed to iOS via messageHandler
message.
In your iOS code:
Add a message handler using WKUserContentController's add(_:name:)
method like below:
webView.configuration.userContentController.add(self, name: "messageHandler")
Finally, in your ViewController
code implement WKScriptMessageHandler's userContentController:didReceiveScriptMessage:
method like:
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "messageHandler" {
// Your Message handler code goes here...
}
As per Apple documentation of the add(_:name:)
method:
Adding a script message handler with name name
causes the JavaScript function window.webkit.messageHandlers.name.postMessage(messageBody) to be defined in all frames in all web views that use the user content controller.
Apple Documentation link