原生 vs html5

微信带动了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");

}];

posted on 2016-04-30 21:28  Tony0571  阅读(150)  评论(0编辑  收藏  举报

导航