本项目受到了 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
- 将
pod 'WKWebViewJavascriptBridge', '~> 1.2.0'
添加到您的 Podfile 中。 - 运行
pod install
或pod update
。 - 添加
import WKWebViewJavascriptBridge
。
Carthage
- 将
github "Lision/WKWebViewJavascriptBridge" ~> 1.2.0
添加到您的 Cartfile 中。 - 运行
carthage update --platform ios
。 - 将
WKWebViewJavascriptBridge
框架添加到您的项目中。
手动
或者克隆仓库并在 WKWebViewJavascriptBridge 中手动添加文件。
要求
此框架需要 iOS 9.0+
和 Xcode 9.0+
。
联系
- 邮箱: [email&protected]
- 新浪微博: @Lision
- Twitter: @Lision
许可证
WKWebViewJavascriptBridge 在 MIT 许可证下提供。有关详细信息,请参阅 LICENSE 文件。