Objective-C与JS交互 —— WebViewJavascriptBridge

WebViewJavascriptBridge同时支持UIWeView和WKWebView,无论是JS调用OC还是OC调用JS,都可以正常传值和返回值;而且在页面加载时只要JS代码被运行就可以进行交互,是现在处理交互的主流做法。

  • 1.初始化webViewBridge
    _webViewBridge = [WKWebViewJavascriptBridge bridgeForWebView:self.webView];
    [_webViewBridge setWebViewDelegate:self];
  • 2.注册Native方法
#pragma mark – Private Methods

- (void)registLocationFunction {
    [_webViewBridge registerHandler:@"getLocation" handler:^(id data, WVJBResponseCallback responseCallback) {
        // 获取位置信息
        ···
        
        NSString *locationStr = @"广东省深圳市南山区高新南一道TCL大厦";
        // 将结果返回给js
        responseCallback(locationStr);
    }];
}
  • 3.JS调用OC
 function locationClick() {
                WebViewJavascriptBridge.callHandler('getLocation',null,function(response) {
                    alert(response);
                    document.getElementById("returnValue").value = response;
                });
            }
  • 4.OC调用JS
    [_webViewBridge callHandler:@"testJSFunction" data:@"一个字符串" responseCallback:^(id responseData) {
        NSLog(@"调用完JS后的回调:%@",responseData);
    }];
  • 5.JS响应OC调用
     setupWebViewJavascriptBridge(function(bridge) {
                 bridge.registerHandler('testJSFunction', function(data, responseCallback) {
                    alert('JS方法被调用:'+data);
                    responseCallback('js执行过了');
                 })
            })

你可能感兴趣的:(Objective-C与JS交互 —— WebViewJavascriptBridge)