我们在使用app的时候,经常能发现app中的H5页面,在oc和js交互的时候,常采用桥接的方式,今天,向大家介绍一款比较流行使用的的桥WebViewJavascriptBridge
#import "WebViewJavascriptBridge.h"
@property WebViewJavascriptBridge* bridge;
桥的实例化
self.bridge = [WebViewJavascriptBridge bridgeForWebView:webView];
注册桥和处理js的回调
[self.bridge registerHandler:@"ObjC Echo" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"ObjC Echo called with: %@", data);
if (data == nil || ![data isKindOfClass:[NSDictionary class]] || ((NSDictionary*)data).allKeys.count !=2) {
NSLog(@"JSBridge:参数错误");
return;
}
NSString* action = [data getValueForKey:@"action"];
if ([action isEqual:[NSNull null]]) {
NSLog(@"JSBridge:action参数错误");
return;
}
if ([[action uppercaseString] isEqualToString:@"TALKINGDATA"]) {
NSArray* args = [data getValueForKey:@"args"];
if (args == nil ||args.count == 0) {
return;
}
NSDictionary* data = args[0];
NSString* eventId = [data getValueForKey:@"eventId"];
NSString* label = [data getValueForKey:@"label"];
}
if ([[action uppercaseString] isEqualToString:@"REQ_SIGN"]) {
NSArray* args = [data getValueForKey:@"args"];
if (args == nil ||args.count == 0) {
return;
}
responseCallback(data);
}];
[self.bridge callHandler:@"JS Echo" data:nil responseCallback:^(id responseData) {
NSLog(@"ObjC received response: %@", responseData);
}];
"ObjC Echo"是根据和前端h5工程师的约定的参数。
网友评论