微信带动了html5 技术的广泛应用 有点夸张,但它确实火了一把。
现在就来学习学习 ios 是如何与h5进行交互的;
PART-ONE :
一、原理
1.h5 与 ios 进行交互,首先得建立 webviewBridge ,沟通的桥梁;
2.其次是双方的响应。
a.先在h5端注册一个响应的名称。
b.oc就可以通过这个名称对h5进行呼叫。
c.oc发送消息给h5 分两种情况,一种是要求h5返回参数,而另一种是不要求h5返回数据
PART-TWO
二、使用
比较好用的第三库 WebViewJavascriptBridge
第一步:注册一个UIWebView
UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:webView];
第二步:注册“桥梁”
- (void)viewDidload {
if(self.bridge == nil) { return ;}
[WebViewJavascriptBridge enableLogging];
self.bridge = [WebViewJavascriptBridge bridgeForWebVeiw:webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"Objc received message from JS :%@",data);
}
responseCallback(@"Response for message from Objc");
}];
}
第三步:JS调用OC方法
[_bridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"testObjcCallback called: %@", data);
responseCallback(@"Response from testObjcCallback");
}];
第四步:OC调用JS方法
[_bridge callHandler:@"testObjcCallback" data:data responseCallback:^(id response) {
response(@"Response from testObjcCallback");
}
第五:
无参返回
[_bridge send: @"this is a message from OC" ];
有参返回
[_bridge send:@"this a message from OC ,please answer the message when u see it" responseCallback(^id response) {
NSLog(@"the answer from JS");
}];