天天看点

iOS 开发 objective-C界面与H5交互

在当前的移动开发过程中,原生与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界面里的方法向我们传值。

如图

iOS 开发 objective-C界面与H5交互