我们正在尝试从Angular 6,HTML5项目向发送信号到iOS WKWebView
的最佳选择。
任何示例示例都将非常棒。
我们想做的是:在Angular网页上有一个按钮,单击该按钮应通知iOS执行某些操作。
我们在iOS WKWebView
中加载Angular页面。
关于Angular 5 and native IOS/Android communication,这不是很清楚。如果从ios和角度端都有可用的示例,那就太好了。
我们正在尝试从Angular 6,HTML5项目向发送信号到iOS WKWebView
的最佳选择。
任何示例示例都将非常棒。
我们想做的是:在Angular网页上有一个按钮,单击该按钮应通知iOS执行某些操作。
我们在iOS WKWebView
中加载Angular页面。
关于Angular 5 and native IOS/Android communication,这不是很清楚。如果从ios和角度端都有可用的示例,那就太好了。
Apple在WebKit
中提供了一种机制,可将消息从您的HTML发送到本地:
在您的HTML页面中,致电:
window.webkit.messageHandlers.messageHandler.postMessage("Pass your data here...");
其中messageHandler
是您的iOS代码中收到的消息的名称。 "Pass your data here..."
是通过messageHandler
消息传递到iOS的数据。
在您的iOS代码中:
使用WKUserContentController的add(_:name:)
方法添加消息处理程序,如下所示:
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...
}
根据add(_:name:)
方法的Apple文档:
添加名称为name的脚本消息处理程序 导致在所有使用用户内容控制器的Web视图的所有框架中定义JavaScript函数window.webkit.messageHandlers.name.postMessage(messageBody)。