H5发消息给swift
时间: 2023-08-24 11:08:17 浏览: 18
要在H5页面中向Swift发送消息,可以使用JavaScript与Swift进行通信。有几种方法可以实现这个目的:
1. 使用JavaScriptCore框架
JavaScriptCore框架是一种将JavaScript引擎集成到iOS应用程序中的方式。可以使用它来执行JavaScript代码,并允许JavaScript代码与原生代码进行交互。
首先,在Swift中创建一个JSContext对象:
```
let context = JSContext()
```
然后,将JavaScript代码作为字符串传递给该对象的evaluateScript方法:
```
context.evaluateScript("alert('Hello from JavaScript!')")
```
可以在JavaScript代码中调用Swift函数,也可以在Swift中调用JavaScript函数。例如,在Swift中调用JavaScript的alert函数:
```
let alertFunction = context.objectForKeyedSubscript("alert")
alertFunction.call(withArguments: ["Hello from Swift!"])
```
2. 使用WebViewJavascriptBridge库
WebViewJavascriptBridge是一种为Web和原生代码之间的通信提供简单API的库。它提供了一种双向通信的方法,使得可以在H5页面和原生代码之间互相发送消息。
首先,在Swift中创建一个WebViewJavascriptBridge对象:
```
let bridge = WebViewJavascriptBridge(webView: webView)
```
然后,在H5页面中使用以下JavaScript代码将消息发送给Swift:
```
bridge.send("Hello from H5!")
```
在Swift中,可以使用以下代码接收H5页面发送的消息:
```
bridge.registerHandler("myHandler") { (data, responseCallback) in
print("Received message from H5: \(data)")
}
```
这将注册一个名为“myHandler”的处理程序,当H5页面使用以下JavaScript代码发送消息时,该处理程序将被调用:
```
bridge.callHandler("myHandler", data: "Hello from H5!", responseCallback: nil)
```
这将在Swift中输出以下消息:
```
Received message from H5: Hello from H5!
```
以上是两种将H5页面与Swift进行通信的方法。您可以根据您的具体需求选择合适的方法。
相关推荐















