WKWebViewJavascriptBridge 1.2.2

WKWebViewJavascriptBridge 1.2.2

Lision 维护。



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。

特性

  • Swift 支持: Swift 3.2 ~ 5 支持。
  • 高性能: 消息性能高于拦截请求。
  • 速度快: 无需考虑 alert box 安全超时。
  • 轻量级: 此框架只包含 3 个文件。
  • 不侵入式: 无需让 webview 类继承其他基类。

用法

1. 使用 WKWebView 实例化 WKWebViewJavascriptBridge

bridge = WKWebViewJavascriptBridge(webView: webView)

2. 在本地注册处理程序,并调用 JS 处理程序

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,然后使用该桥接程序注册处理程序并调用本地处理程序

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. pod 'WKWebViewJavascriptBridge', '~> 1.2.0' 添加到您的 Podfile 中。
  2. 运行 pod installpod update
  3. 添加 import WKWebViewJavascriptBridge

Carthage

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

手动

或者克隆仓库并在 WKWebViewJavascriptBridge 中手动添加文件。

要求

此框架需要 iOS 9.0+Xcode 9.0+

联系

许可证

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