天天看點

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互動