在目前的移動開發過程中,原生與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界面裡的方法向我們傳值。
如圖