美文网首页
使用WebViewJavascriptBridge实现OC与JS

使用WebViewJavascriptBridge实现OC与JS

作者: 小歪子go | 来源:发表于2017-11-29 23:17 被阅读0次

我们在使用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工程师的约定的参数。

相关文章

网友评论

      本文标题:使用WebViewJavascriptBridge实现OC与JS

      本文链接:https://www.haomeiwen.com/subject/vuhmbxtx.html