WebViewJavaScriptBridge (swift版)

来源:互联网 发布:在线反馈系统php源码 编辑:程序博客网 时间:2024/06/05 12:41

最近swift已经更新到了swift4,趋向于稳定了。公司项目不是很紧张就继续学习swift。
一直在想做什么项目,可以一边写项目一边学swift,然后想到可以写公司的项目。一方面,如果以后更换为swift,能提前考虑,或者换到下家公司说不定用的就是swift。因为公司项目用到WebViewJavaScriptBridge,然后在GitHub上面又一直没找到,所以就想移植到swift3 上。如果需要oc 版本请移步WebViewJavascriptBridge
SwiftWebViewJavascriptBridge

现在多是支持iOS8以上的,用wkwebview的已经很多了。所以这里也就移植了webview ,其实UIWebView 也是同理的。同样都是调用代理方法。废话不多说,上代码。
用法和WebViewJavaScriptBridge 一样的,因为本来就是移植的。
这个主要以学习为主,虽然网上已经有了SwiftWebViewBridge

1.Native -> JS

  self.bridge?.callHandler(handlerName: "native_call_webview", data: "{\"param\":{\"typeId\":\"10122\",\"starttime\":\"2017-11-02\",\"endtime\":\"2017-11-04\"}}")

然后内部会将数据转化为js接受格式,然后在通过webview的方法

evaluateJavaScript(_ javaScriptString: String, completionHandler: ((Any?, Error?) -> Swift.Void)? = nil)

来把数据传给js里面的回调。这里其实少说了一步,就是register 第一次注册的时候,会给webview 注入一段js代码。这段代码,就是用来和前端原生发出的js进行响应的。

js->native

这个无非还是要走代理方法的,方式还是通过截取url 来判断是否方式,响应webview

这个有三个阶段
1、注册,webview 加载一段js代码
2、js会触发代理方法 第一个url 是用来桥接的,比较像网络请求,确认桥接
3、js 再出发代理方法,固定url ,说我要发信息,然后本地再运行一段js出发webview 给数据

其实真的就那么简单,在没找到swift 版的桥接之前,就每个方法加断点。一步一步走就好了。经常报错,不懂的语法当场度娘,即学即用。

GitHub代码SwiftWebViewJavaScriptBridge
路过有用的,给个star,谢谢。