使用WebViewJavascriptBridge实现OC与JS交互

我们在使用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工程师的约定的参数。
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容