OC与JS交互问题

1、首先导入第三方框架WebViewJavascriptBridge

WKWebView的用法

 WKWebView* webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
    webView.navigationDelegate = self;
    webView.UIDelegate = self;
    [webView.configuration.preferences setValue:@"TRUE" forKey:@"allowFileAccessFromFileURLs"];
    webView.scrollView.bounces = NO;
    self.webView = webView;
    [self.view addSubview:webView];
//WebViewJavascriptBridge的创建方式
    [WebViewJavascriptBridge enableLogging];
    _bridge = [WebViewJavascriptBridge bridgeForWebView:webView];
    [_bridge setWebViewDelegate:self];

2、JS调用OC的方法及响应

[_bridge registerHandler:@"App_scanBarCode" handler:^(id data, WVJBResponseCallback responseCallback) {
        NSLog(@"testObjcCallback called: %@", data);
//        responseCallback(@"Response from testObjcCallback");
        
        XYBShapeCodeViewController *vc = [[XYBShapeCodeViewController alloc] init];
        vc.shapecodevcType = XYBShapeCodeVCTypeCustom;
        vc.codeBlock = ^(NSString * msg) {
            [weakSelf callHandler:msg];
        };
        
        [weakSelf.navigationController pushViewController:vc animated:YES];
    }];

第一个参数(字符串):JS调用的方法名
block里面的参数:data是JS传过来的参数
3、OC调用JS的方法

[_bridge callHandler:@"App_getUserInfo" data:@{@"username":user.username,@"merCode":user.merCode} responseCallback:^(id responseData) {
        
    }];

第一个参数是需要调用的JS里面的方法名
第二个参数是需要给该方法传递的参数
第三个参数是JS回调block

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容