在iOS8以上使用了WKWebView,WKWebView在内存和性能上都远胜UIWebView
1、在性能、稳定性、功能方面有很大提升(最直观的体现就是加载网页是占用的内存,模拟器加载百度与开源中国网站时,WKWebView占用23M,而UIWebView占用85M);
2、允许JavaScript的Nitro库加载并使用(UIWebView中限制);
支持了更多的HTML5特性;
3、高达60fps的滚动刷新率以及内置手势;
4、将UIWebViewDelegate与UIWebView重构成了14类与3个协议(查看苹果官方文档https://developer.apple.com/library/mac/documentation/Cocoa/Reference/WebKit/ObjC_classic/index.html);
更换后,出现两个大坑:
1、之前通过写NSHTTPCookieStorage与h5同步登录状态失败
2、内部h5使用第三方调起协议全部实效
1、WKWebView不会再从NSHTTPCookieStorage取cookie,而是需要在初始化时通过WKUserScript写入
2、WKWebView无法识别的协议(比如我们第三方调起的)会直接进入失败的delegate方法中,不会像UIWebView那样默认调用openURL方法,所以对于我们自己的的协议头,需要我们手动调用一下openURL
1、在性能、稳定性、功能方面有很大提升(最直观的体现就是加载网页是占用的内存,模拟器加载百度与开源中国网站时,WKWebView占用23M,而UIWebView占用85M);
2、允许JavaScript的Nitro库加载并使用(UIWebView中限制);
支持了更多的HTML5特性;
3、高达60fps的滚动刷新率以及内置手势;
4、将UIWebViewDelegate与UIWebView重构成了14类与3个协议(查看苹果官方文档https://developer.apple.com/library/mac/documentation/Cocoa/Reference/WebKit/ObjC_classic/index.html);
更换后,出现两个大坑:
1、之前通过写NSHTTPCookieStorage与h5同步登录状态失败
2、内部h5使用第三方调起协议全部实效
1、WKWebView不会再从NSHTTPCookieStorage取cookie,而是需要在初始化时通过WKUserScript写入
2、WKWebView无法识别的协议(比如我们第三方调起的)会直接进入失败的delegate方法中,不会像UIWebView那样默认调用openURL方法,所以对于我们自己的的协议头,需要我们手动调用一下openURL
本文介绍了在iOS应用中使用WKWebView替代UIWebView的过程及优势,包括内存占用减少、JavaScript性能提升、HTML5特性的增强支持等。同时分享了转换过程中遇到的问题及解决方案,如登录状态同步与自定义协议调用的实现。
1891

被折叠的 条评论
为什么被折叠?



