赞
踩
iOS有UIWebview和WKWebview两种webview。从iOS13开始苹果将UIWebview列为过期API。2020年4月起App Store将不再接受使用UIWebView的新App上架、2020年12月起将不再接受使用UIWebView的App更新。
在进行5+app开发中,从HBuilderX 2.2.5起,iOS上默认均已经是WKWebview,除非开发者手动在代码中指定要用UIWebview,否则实际渲染的页面都是在WKWebview里渲染的。不过,虽然实际页面是WKWebview渲染的,但App底层引擎源码里仍然有UIWebview的可选引用。Appstore的机审会发现二进制代码中包括对UIWebview的引用,从而引发告警。
从HBuilderX 2.6.6起,uiWebview从基础引擎中移除,变成可选模块(manifest里选择),机审也没有提示了。
现在下面就来讲解一下UIwebview以及WKwebview以及他们的区别。
UIWebView用于在App中嵌入网页内容,通常情况下是html格式的网页,也支持pdf, word等文档。
可跨平台
开发一次可以部署iOS、Android等平台。
发布更新快
在服务器端发布,能够实时更新终端展示,便于快速升级以及紧急修复bug。
排版布局能力强
强大的HTML+CSS让人膜拜
性能
Native与HTML5争论时最喜欢说的一句话就是:“你性能不行”。Web App运行在浏览器里,浏览器的开放能力难以支持HTML5与Native对抗。
数据通讯复杂
UIWebView与App之间进行数据通讯只能通过javascript或者UIWebViewDelegate来进行,客户端想传参数给UIWebView修改网页或者从网页中获取数据都比较复杂。
排版复杂的内容
需后台灵活控制的界面
原网页
随着IOS开发的应用,对于网页嵌入也越来越多了,在IOS 8之前我们使用UIWebView展示详情页,自从IOS 8之后就出现了WKWebView,相比UIWebView,WKWebView优化了较多的体验。
WKWebView采用跨进程方案,Nitro JS解析器,高达60fps的刷新率,理论上性能和Safari比肩,而且对H5也实现了高度支持。
1.WKWebView的内存开销比UIWebView小很多
2.内置手势
3.支持了更多的HTML5特性
4.有Safari相同的JavaScript引擎
5.提供常用的属性,如加载网页进度的estimatedProgress属性
UIWebview自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebview。通过官方性能测试可以发现UIWebview占用过多内存,且内存峰值更是夸张。WKWebView网页加载速度也有提升,但是并不像内存那样提升那么多。
WKWebView是苹果在WWDC2014发布会中发布IOS8的时候公布WebKit时候使用的新型的H5容器。它与UIWebView相比较,拥有更快的加载速度和性能,更低的内存占用。将UIWebViewDelegate和UIWebView重构成了14个类,3个协议,可以让开发者进行更加细致的配置。
但是他有一个最致命的缺陷,就是WKWebView的请求不能被NSURLProtocol截获。
如上图分别是UIWebview与WKWebView的流程,WKWebView的流程粒度更加细致,不但在请求的时候会询问WKWebView是否请求数据,还会在返回数据之后询问WKWebView是否加载数据。
更多关于UIwebview与WKwebview的使用方法请访问教程链接。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。