iOS优化webview加载失败情况

经常使用UIWebView(WKWebView iOS8.0开始支持)的同学,肯定有经验,加载失败,webview是空白页,很多用户就会说为什么这样,一片空白,用户不会去管你是网络失败还是什么,他想重新刷新一下也没有入口。对于这种情况,我们可以在网络加载失败后,加载个默认页面。

设计思路和部分代码如下:

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

在代理方法里,监听到失败,就去加载本地一个失败静态html。里面可以做个按钮,点击后重新刷新。效果如下:

iOS优化webview加载失败情况_第1张图片

加载本地html请求不难,这边点击刷新后的点击事件,需要重新发送之前的请求。这里有2种思路:

1.提供js交互接口。本地网页调用这个接口,原生客户端处理重新loadurl,load之前的url。只需要保持住原先url即可。

2.在load本地失败页面时候,带上失败的url,可以当参数传过去,比如xxx?reloadURL=@"http://www.baidu.com"。然后在本地url里取这个reloadURL,去加载即可。


此方案有个小注意点:如果你遇到加载失败,返回页面不对等,比如利用webview的goback,返回页面不对,那么可以location.replace修改网页中堆栈信息即可。

你可能感兴趣的:(iOS优化webview加载失败情况)