SwiftJSBridge
SwiftJSBridge 是一个实用的 JavaScript Bridge,使用 Swift 编写,支持 WKWebView 和 UIWebView
示例
- Swift
let JSBridge = SwiftJSBridge(for: webview)
JSBridge.addSwift(bridge: { (data, cb) in
cb?(["appVersion":"1.0"])
}, name: "getAppVersion")
JSBridge?.callJS(name: "sendMessageToJS", data: ["message":"Hi, I am native"]) { (data) in
}
- JS
function setupSwiftJSBridge(callback) {
if (window.SwiftJSBridge) { return callback(SwiftJSBridge); }
if (window.SwiftJSBridgeReadyCallbacks) { return window.SwiftJSBridgeReadyCallbacks.push(callback); }
window.SwiftJSBridgeReadyCallbacks = [callback];
SwiftJSBridgeInject()
}
function isWebKit() {
return window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.SwiftJSBridgeInject;
}
function SwiftJSBridgeInject() {
console.log("SwiftJSBridgeInject" )
if (isWebKit()) {
window.webkit.messageHandlers.SwiftJSBridgeInject.postMessage("SwiftJSBridgeInject")
} else {
var src = "https://SwiftJSBridgeInject/" + Math.random()
var req = new XMLHttpRequest
req.open("GET", src)
req.send()
}
}
setupSwiftJSBridge(function(bridge) {
function log(message, data) {
console.log(message+data)
}
bridge.addJSBridge('sendMessageToJS', function(data, responseCallback) {
log('Native called sendMessageToJS with', data)
var responseData = { message:'Hi, I am JS' }
log('JS responding with', responseData)
responseCallback(responseData)
})
})
function test() {
SwiftJSBridge.callNativeBridge("getAppVersion",{"data":"v1"},function(data){
console.log("callback")
console.log(data)
})
}
要运行示例项目,请先克隆仓库,然后在 Example 目录下运行 pod install
。
需求
安装
SwiftJSBridge 可通过 CocoaPods 获取。要安装它,只需在 Podfile 中添加以下行
pod 'JSBridgeKit'
作者
hhfa008,[email protected]
许可
SwiftJSBridge 采用 MIT 许可协议。更多详情请参阅 LICENSE 文件。