1、首先导入第三方框架WebViewJavascriptBridge
WKWebView的用法
WKWebView* webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
webView.navigationDelegate = self;
webView.UIDelegate = self;
[webView.configuration.preferences setValue:@"TRUE" forKey:@"allowFileAccessFromFileURLs"];
webView.scrollView.bounces = NO;
self.webView = webView;
[self.view addSubview:webView];
//WebViewJavascriptBridge的创建方式
[WebViewJavascriptBridge enableLogging];
_bridge = [WebViewJavascriptBridge bridgeForWebView:webView];
[_bridge setWebViewDelegate:self];
2、JS调用OC的方法及响应
[_bridge registerHandler:@"App_scanBarCode" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"testObjcCallback called: %@", data);
// responseCallback(@"Response from testObjcCallback");
XYBShapeCodeViewController *vc = [[XYBShapeCodeViewController alloc] init];
vc.shapecodevcType = XYBShapeCodeVCTypeCustom;
vc.codeBlock = ^(NSString * msg) {
[weakSelf callHandler:msg];
};
[weakSelf.navigationController pushViewController:vc animated:YES];
}];
第一个参数(字符串):JS调用的方法名
block里面的参数:data是JS传过来的参数
3、OC调用JS的方法
[_bridge callHandler:@"App_getUserInfo" data:@{@"username":user.username,@"merCode":user.merCode} responseCallback:^(id responseData) {
}];
第一个参数是需要调用的JS里面的方法名
第二个参数是需要给该方法传递的参数
第三个参数是JS回调block