iOS原生App與H5頁面交互筆記


iOS原生App與H5頁面交互筆記

      最近在做一個項目用到了原生App與H5交互,之前有做過簡單的H5頁面直接調用原生方法的例子,就是利用UIWebView中的代理方法

//webview每次加載之前都會調用這個方法,利用該代理方法截取JS的href來調用原生的方法

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType


       然而這次的交互要求是進行雙向通信,即JS調用原生App的方法之后,原生App要講相關參數信息返回給H5頁面,H5頁面接受到參數信息后做其他處理。

例:H5頁面的發布信息按鈕,在點擊按鈕后要在原生端判斷用戶是否登錄,若沒有登錄則彈出原生登錄頁面,登錄成功后將用戶信息返回給H5頁面,繼續發布流程


重點來了!

在這里推薦一個比較好的第三方庫即:WebViewJavascriptBridge 

地址:https://github.com/marcuswestin/WebViewJavascriptBridge

通過使用該庫可以輕松實現JS與原生交互。

//初始化WebViewJavascriptBridge方法

_bridge= [WebViewJavascriptBridge bridgeForWebView:self.BookWebView webViewDelegate:self handler:^(id data,WVJBResponseCallback responseCallback) {

}];

//原生與JS約定接口名為“testObjcCallback”,data是JS傳遞過來的信息,responseCallback來將信息傳遞給JS

[_bridge registerHandler:@"testObjcCallback" handler:^(id  data,WVJBResponseCallback responseCallback) {

responseCallback("postInfomationToJS")

}];


UIWebView頁面信息的離線緩存

推薦一個比較好的第三方庫RNCachingURLProtocol ,只需要在AppDelegate中加入下面方法即可。

[NSURLProtocolregisterClass:[RNCachingURLProtocolclass]];

地址:https://github.com/rnapier/RNCachingURLProtocol


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM