To run the example project, clone the repo, and run pod install from the Example directory first.
iOS 6.0+
HWJavaScriptBridge is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'HWJavaScriptBridge'
You can also use Swift Package Manager to install HWJavaScriptBridge. Add the following dependency to your Package.swift:
dependencies: [ .package(url: "https://github.com/bbc6bae9/HWJavaScriptBridge.git", from: "1.0.0") ]
Or add it directly in Xcode:
- Go to File → Add Package Dependencies
- Enter the repository URL:
https://github.com/bbc6bae9/HWJavaScriptBridge.git - Select the version you want to use
HWWebViewJavaScriptBridge *bridge = [[HWWebViewJavaScriptBridge alloc] initWithWebView:self.webView]; self.bridge = bridge; [bridge registerHandler:@"invoke" handler:^(id _Nonnull data, HWJBResponseCallback _Nonnull responseCallback) { NSDictionary *clientData = @{ @"code":@(0), @"msg":@"success", @"data":@{@"company":@"Fooman"} }; responseCallback(clientData); }];
[self.bridge callHandler:@"dispatchEvent" data:@{@"func": @"preRender"} responseCallback:^(id _Nonnull responseData) { NSLog(@"[preRender] callback =%@", responseData); }];
JSVirtualMachine *vm = [[JSVirtualMachine alloc] init]; JSContext *ctx = [[JSContext alloc] initWithVirtualMachine:vm]; self.ctx = ctx; HWJSContextJavaScriptBridge *bridge = [[HWJSContextJavaScriptBridge alloc] initWithJSContext:ctx]; self.bridge = bridge; // 监听JS调用的postMessage方法 [bridge registerHandler:@"invoke" handler:^(id _Nonnull data, HWJBResponseCallback _Nonnull responseCallback) { NSDictionary *clientData = @{ @"code":@(0), @"msg":@"success", @"data":@{@"company":@"Fooman"} }; responseCallback(clientData); }];
// 客户端主动调用JS,并得到JS的回应 NSDictionary *data = @{ @"func":@"preRender", @"params":@{ @"url":@"https://m.film.qq.com" } }; [self.bridge callHandler:@"dispatchEvent" data:data responseCallback:^(id responseData) { NSLog(@"[preRender] recieve callback data=%@", responseData); }];
bbc6bae9, [email protected]
HWJavaScriptBridge is available under the MIT license. See the LICENSE file for more info.