I know how to send message from JS to native IOS swift app:
func userContentController(userContentController: WKUserContentController!, didReceiveScriptMessage message: WKScriptMessage!) {
println("JavaScript is sending a message \(message.body)")
}
and JS:
webkit.messageHandlers.callbackHandler.postMessage("Hello from JavaScript");
My question: is it possible to directly call a function in the native app rather then receiving the message in my example code.
say i want in the JS to use something like:
webkit.messageHandlers.someFunctionName()
The reason i am asking is that In Android thats how it works
WKWebView supports only the raw message passing interface. You have to wrap it for complex interactions between JS and native.
I created a project named XWebView which offers language binding styled API based on the raw message passing of WKWebView. It's written in Swift.
For example, you can write a plugin in Swift:
class Plugin : NSObject {
func someFunctionName() {
doSomeThing()
}
}
Expose an instance of the plugin to JavaScript before loading HTML:
let webView = WKWebView(frame: frame, configuration: WKWebViewConfiguration())
webView.loadPlugin(Plugin(), namespace: "foo")
Call the function from JavaScript:
window.foo.someFunctionName()
It's really easy and straightforward. For more details, please check the project's page.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With