WKWebViewJavascriptBridge - 優雅的 iOS 與 JS 交互層框架(Swift)

WKWebViewJavascriptBridge 簡介

WKWebViewJavascriptBridge - 優雅的 iOS 與 JS 交互層框架(Swift)git

GitHub 項目地址:WKWebViewJavascriptBridgegithub

WKWebViewJavascriptBridge 能爲你作什麼?

你能夠經過使用 WKWebViewJavascriptBridge 書寫幾行代碼實現混合模塊,而無需關心底層的 iOS 與 JS 消息傳遞實現。web

爲何要開源 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 的時代。code

UIWebView 跨域訪問漏洞

iOS 平臺跨域訪問漏洞成因是因爲 UIWebView 默認開啓了WebKitAllowUniversalAccessFromFileURLs 和 WebKitAllowFileAccessFromFileURLs 選項。cdn

相比之下,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!


補充~ 我建了一個技術交流微信羣,想在裏面認識更多的朋友!若是各位同窗對文章有什麼疑問或者工做之中遇到一些小問題均可以在羣裏找到我或者其餘羣友交流討論,期待你的加入喲~

Emmmmm..因爲微信羣人數過百致使不能夠掃碼入羣,因此請掃描上面的二維碼關注公衆號進羣。

相關文章
相關標籤/搜索