在当前的移动开发过程中,原生与H5的混合开发越来越多,H5界面在APP中的比例越来越大,H5不在仅仅是展示内容信息,儿此时的交互,也越来越多。接下来介绍一点iOS与H5交互的心得。
iOS加载webView
iOS加载webView还是非常方便的,声明webView,接着load一下,就可以了。
@property (nonatomic,strong) UIWebView * webView;
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[self.webView loadRequest:request];
接下来说一些交互的东西
1、首先是打开界面时传参数,这里只需要在URL后面拼接就可以。
2、H5界面向iOS端传递信息
这里是H5部分写的
window.location.href = "协议名:传值内容";
window.location.href = "ios:back";
这是iOS端做的操作
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *requestString = [[request URL] absoluteString];
requestString = [requestString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if( navigationType == UIWebViewNavigationTypeOther ) {
if ([requestString hasPrefix:@"ios:"]) {
//开始处理你的逻辑,收到消息要怎么做
[self.navigationController popViewControllerAnimated:YES];
return NO;
}
}
return YES;
}
在这之前,一定记得先遵循协议。
逻辑非常简单,H5端刷新界面,但是提前约定好刷新的URl,拿到这个URL,就拦截,不允许刷新,同事将URL后跟的拿到,这是,你想做什么做什么。
3、Objective-C调用javascript
我们用去调用一个js方法,这个js方法我们可以重复上面2的写法,相当于有了回调,我们点击某个原生按钮,激活这个方法,会导致h5界面里的方法向我们传值。
如图
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiN1gjNygDN3EzMxYDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)