一个iOS上用于WKWebView和JavaScript通信的Bridge。
将其添加到您的Podfile文件中并运行pod install以安装。
pod 'JKJSBridge'
下载并运行JKMicroWebView 项目,以查看示例。
-
导入头文件,并声明一个属性:
#import <JKJSBridge/JKMicroJSBridge.h>
@property (nonatomic, strong) JKMicroJSBridge *bridge;
-
使用WKWebView实例化JKMicroJSBridge:
self.bridge = [JKMicroJSBridge bridgeForWebView:self.webView];
-
注册一个JS调用ObjC的函数:
[self.bridge registerHandler:@"jsToOcFunction2" handler:^(NSDictionary *params, JKJSCallback callback) { NSLog(@"%@", params); callback(@{@"data": @"OC callback JS"}); }];
-
ObjC调用JS函数:
[self.bridge callHandler:@"changeColor" data:@"oc 传给 js 的数据" responseCallback:^(NSDictionary *response) { NSLog(@"%@", response); }];
-
在JS中使用如下函数调用ObjC:
window.JKMicroJSBridge.callHandler('jsToOcFunction2',{'data':'我是参数'},function(response) { alert(response) })
-
在JS中注册如下方法供ObjC调用,调用后可回调数据ObjC:
window.JKMicroJSBridge.registerHandler('changeColor', function(data, responseCallback) { //dosomething var responseData = { 'Javascript Says':'Right back atcha!' } //回调给ObjC的数据 responseCallback(responseData) })
/**
注册原生函数,供js调用
@param handlerName 函数名
@param handler 原生处理方法
*/
- (void)registerHandler:(NSString *)handlerName handler:(JKJSHandle)handler;
/**
移除注册的原生函数,移除之后js将不能在调用到这个OC方法了,需要重新注册之后才能调用
@param handlerName 函数名
*/
- (void)removeHandler:(NSString *)handlerName;
/**
oc调用js
@param handlerName js函数名
*/
- (void)callHandler:(NSString *)handlerName;
/**
co调用js
@param handlerName js函数名
@param data 传递给js的数据
*/
- (void)callHandler:(NSString *)handlerName data:(id)data;
/**
oc调用js
@param handlerName 函数名
@param data 传递给js的数据
@param responseCallback JS回调给原生
*/
- (void)callHandler:(NSString *)handlerName data:(id)data responseCallback:(JKJSCallback)responseCallback;