language  Carthage compatible  License MIT  Support  CocoaPods  Build Status  CocoaPods

中文介绍

此项目灵感来源于 WebViewJavascriptBridge!

WKWebViewJavascriptBridge 能做什么?

通过使用 WKWebViewJavascriptBridge,您只需几行代码即可编写混合模块,而无需担心底层消息传递的实现。

为什么只支持 WKWebView?

WKWebView 的优势

众所周知,WKWebView 加载网页的速度比 UIWebView 更快更有效,并且也没有那么多的内存开销

在当前时间线中,大多数 iOS 应用程序仅支持 iOS 9.0+。

UIWebView 跨域访问漏洞

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

WKWebView 默认 allowFileAccessFromFileURLs 和 allowUniversalAccessFromFileURLs 选项为 false。

特性

用法

1. 使用 WKWebView 实例化 WKWebViewJavascriptBridge

bridge = WKWebViewJavascriptBridge(webView: webView)

2. 在 Native 中注册一个 Handler,并调用一个 JS Handler

bridge.register(handlerName: "testiOSCallback") { (parameters, callback) in
    print("testiOSCallback called: \(String(describing: parameters))")
    callback?("Response from testiOSCallback")
}

bridge.call(handlerName: "testJavascriptHandler", data: ["foo": "before ready"], callback: nil)

3. 将 setupWKWebViewJavascriptBridge 复制并粘贴到您的 JS 中

function setupWKWebViewJavascriptBridge(callback) {
    if (window.WKWebViewJavascriptBridge) { return callback(WKWebViewJavascriptBridge); }
    if (window.WKWVJBCallbacks) { return window.WKWVJBCallbacks.push(callback); }
    window.WKWVJBCallbacks = [callback];
    window.webkit.messageHandlers.iOS_Native_InjectJavascript.postMessage(null)
}

4. 最后,调用 setupWKWebViewJavascriptBridge,然后使用 Bridge 注册 Handlers 并调用 Native Handlers

setupWKWebViewJavascriptBridge(function(bridge) {

	/* Initialize your app here */

	bridge.registerHandler('testJavascriptHandler', function(data, responseCallback) {
		console.log('iOS called testJavascriptHandler with', data)
		responseCallback({ 'Javascript Says':'Right back atcha!' })
	})

	bridge.callHandler('testiOSCallback', {'foo': 'bar'}, function(response) {
		console.log('JS got response', response)
	})
})

安装

Cocoapods

  1. 在您的 Podfile 中添加 pod 'WKWebViewJavascriptBridge', '~> 1.2.0'
  2. 运行 pod installpod update
  3. 添加 import WKWebViewJavascriptBridge

Carthage

  1. github "Lision/WKWebViewJavascriptBridge" ~> 1.2.0 添加到您的 Cartfile。
  2. 运行 carthage update --platform ios
  3. WKWebViewJavascriptBridge framework 添加到您的项目中。

手动

克隆 repo 并手动添加 WKWebViewJavascriptBridge 中的文件。

要求

此框架需要 iOS 9.0+Xcode 9.0+

联系方式

License

WKWebViewJavascriptBridge 在 MIT 许可下提供。 有关详细信息,请参见 LICENSE 文件。