首页 >iOS开发

WKWebViewJavascriptBridge - 优雅的 iOS 与 JS 交互层框架(Swift)

2018-01-31 10:40 编辑: yyuuzhu 分类:iOS开发 来源:Lision

2.png

WKWebViewJavascriptBridge 简介

WKWebViewJavascriptBridge - 优雅的 iOS 与 JS 交互层框架(Swift)

GitHub 项目地址:WKWebViewJavascriptBridge

WKWebViewJavascriptBridge 能为你做什么?

你可以通过使用 WKWebViewJavascriptBridge 书写几行代码实现混合模块,而无需关心底层的 iOS 与 JS 消息传递实现。

1 (2).gif

为什么要开源 WKWebViewJavascriptBridge

其实在阅读 WebViewJavascriptBridge 源码时就发现其为了兼容 Mac OS X 的 WebView 与 iOS 中的 UIWebView WKWebView 三个组件而被迫沿用拦截 Request 的方式实现 iOS 与 JS 之间的消息传递。

当时就在想目前所处的时间节点正式 WKWebView 的时代,应该针对 WKWebView 来独立封装一个 Bridge 层级的框架,但是由于种种原因(主要是懒,笑)一直没有付诸实践。

直到发现了 UIWebView 跨域访问漏洞 之后,才下定决心写 WKWebViewJavascriptBridge 框架。

至于为什么要用 Swift 作为 WKWebViewJavascriptBridge 的实现语言?主要是因为 Swift 3.2 - 4.0 的迁徙变化已经比较小了,可以认为 Swift 逐步趋于稳定(好吧,我承认就是因为最近看 Swift 比较多,想提高自己的 Swift 水平)。

为什么仅支持 WKWebView?

WKWebView 的优势

众所周知,WKWebView 比 UIWebView 加载网页的速度更快,效率更高,且没有太多的内存开销

在当前时间节点,大多数 iOS App 都是基于 iOS 9.0+ 的,这是一个 WKWebView 的时代

UIWebView 跨域访问漏洞

iOS 平台跨域访问漏洞成因是由于 UIWebView 默认开启了WebKitAllowUniversalAccessFromFileURLs 和 WebKitAllowFileAccessFromFileURLs 选项。

相比之下,WKWebView 默认 allowFileAccessFromFileURLs 和 allowUniversalAccessFromFileURLs 选项为 false。

关于更多 UIWebView 跨域访问漏洞,点击 这里 了解更多。

特性

  • Swift 的支持:Swift 3.2 ~ 4 的支持。

  • 高性能:消息传递性能高于传统实现方式(拦截 Requests)。

  • 高速:无需考虑 Alert Box 安全超时。

  • 轻量:框架除去自动生成的 .h 仅有 3 个文件。

  • 非侵入性:无需改写 webView 的继承基类(这里假设当前时间节点下大部分 iOS App 已经完成了从 UIWebView 到 WKWebView 的迁徙,反正早晚要做这件事不是吗?)。

关于 WKWebViewJavascriptBridge 对于 Objective-C 的支持

关于 WKWebViewJavascriptBridge 对于 Objective-C 的支持,我有以下看法(适用于所有 Swift 框架):

  • 如果之前项目是 Objective-C 与 Swift 混编,那么可以直接使用 WKWebViewJavascriptBridge。

  • 如果之前项目没有与 Swift 混编且之后也没有混编的计划,那么请联系我,我统计一下写一个 Objective-C 版本的实现。

写在最后

如果你已经看到这里了,那么无论如何还请进 项目页面 看一下哈!

项目初期,欢迎 PR!

作者:Lision

链接:https://juejin.im/post/5a6e64286fb9a01c975a7e2d

搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇:iOS11缩小界面导航栏与标签栏异常的问题
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina weixin mail 回到顶部