1.git地址 https://github.com/marcuswestin/WebViewJavascriptBridge
2.引入頭文件
#import <WKWebViewJavascriptBridge.h>
3.寫屬性
@property (nonatomic,strong) WKWebViewJavascriptBridge* mJsBridge;
@property (nonatomic,strong) WVJBResponseCallback payResponseCallback;
4.創建橋接對象,與 _mWebView 關聯
-(WKWebViewJavascriptBridge *)mJsBridge { if (!_mJsBridge) { _mJsBridge = [WKWebViewJavascriptBridge bridgeForWebView:_mWebView]; [_mJsBridge setWebViewDelegate:self]; } return _mJsBridge; }
5.注冊原生事件 requestPay 供 JavaScript 調用, data 是 JavaScript 傳給原生的數據。responseCallback 是原生給 JavaScript 回傳數據
-(void)registJsBridge
{
@WeakSelf(self);
[self.mJsBridge registerHandler:@"requestPay" handler:^(id data, WVJBResponseCallback responseCallback) {
@StrongSelf(self);
if (data&& [data isKindOfClass:[NSDictionary class]]) {
//payResponseCallback先記錄回調對象,便於下面異步處理后回傳給JS數據
self.payResponseCallback = responseCallback;
//原生拿到data做處理
}
}];
}
6.原生調 JavaScript 的事件 JS Echo
[self.mJsBridge callHandler:@"JS Echo" data:nil responseCallback:^(id responseData) { NSLog(@"ObjC received response: %@", responseData); }];