您的位置:首页 > 移动开发 > Objective-C

Objective-c和javascript通信

2016-08-16 00:00 381 查看
摘要: 很多情况需要oc内部加载h5网页,并且2者需要进行通信,原生虽然提供stringByEvaluatingJavaScriptFromString方法进行使用,但是不是很方法,项目中用到了一个WebViewJavascriptBridge的框架,很方便现在介绍一下。[self.bridge registerHandler:@"getHeleNum" handler:^(id data, WVJBResponseCallback responseCallback) {

        NSDictionary *dic = @{@"heleNum":[LoginHuanxinId substri

1、github上下载该库,地址:https://github.com/marcuswestin/WebViewJavascriptBridge

2、项目中引入该库,步骤项目github有写。

3、简单配置:[WebViewJavascriptBridge enableLogging];

4、oc中初始化:

self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView];

5、如果js需要调用oc的方法,那么在oc中需要注册一个方法供js使用。

[self.bridge registerHandler:@"getHeleNum" handler:^(id data, WVJBResponseCallback responseCallback) {

NSDictionary *dic = @{@"heleNum":[LoginHuanxinId substringFromIndex:2]};

responseCallback([self dictionaryToJson:dic]);

}];

再在js中调用。

function drawDocument(arg) {

if (isAndroid) {

//...

arg["heleNum"] = getQueryString('heleNum');

var a = new $.followUp(arg);

}

if (isiOS) {

setupWebViewJavascriptBridge(function(bridge) {

bridge.callHandler("getFollowUp", function(data) {

//...

arg["heleNum"] = heleNum;

var a = new $.followUp(arg);

});

});

}

6、oc调用js的方法。首先在js中register一个方法。

bridge.registerHandler('testJavascriptHandler', function(data, responseCallback) {
log('ObjC called testJavascriptHandler with', data)
var responseData = { 'Javascript Says':'Right back atcha!' }
log('JS responding with', responseData)
responseCallback(responseData)
})


再oc中callhandler。

[_bridge callHandler:@"testJavascriptHandler" data:data responseCallback:^(id response) {
NSLog(@"testJavascriptHandler responded: %@", response);
}];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: