iOS原生與H5雙向互動總結
阿新 • • 發佈:2019-02-05
1,單向通訊時候:webView可以利用代理方法擷取JS,來呼叫原生方法
其代理方法如下:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
2,雙向通訊:即JS呼叫原生方法之後,原生要將相關引數資訊返回給H5,H5接受到引數資訊後做其他處理。
//初始化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")
}];
3,UIWebView頁面資訊的離線快取
推薦一個比較好的第三方庫RNCachingURLProtocol ,只需要在AppDelegate中加入下面方法即可。
[NSURLProtocolregisterClass:[RNCachingURLProtocolclass]];