这篇文章主要为大家展示了“iOS中WKWebView如何处理URL Scheme和App Store链接”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS中WKWebView如何处理URL Scheme和App Store链接”这篇文章吧。
WKWebView简介
UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebView。通过简单的测试即可发现UIWebView占用过多内存,且内存峰值更是夸张。WKWebView网页加载速度也有提升,但是并不像内存那样提升那么多。
下面列举一些其它的优势:
1、更多的支持HTML5的特性
2、官方宣称的高达60fps的滚动刷新率以及内置手势
3、Safari相同的JavaScript引擎,且允许JavaScript的Nitro库加载并使用(UIWebView中限制);
4、将UIWebViewDelegate与UIWebView拆分成了14类与3个协议(官方文档说明)
5、占用更少的内存,在性能、稳定性、功能方面有很大提升(最直观的体现就是加载网页是占用的内存,模拟器加载百度与开源中国网站时,WKWebView占用23M,而UIWebView占用85M);
另外用的比较多的,增加加载进度属性:estimatedProgress
iOS WKWebView无法处理URL Scheme和App Store链接解决方法
之前使用 UIWebView 时,当遇到 App Store 下载链接,例如:
https://itunes.apple.com/cn/app/id414478124?mt=8
在 UIWebView 中点击可以自动打开 iPhone 本地 App Store 并跳转到相应 App 的下载页面,
但是当换成 WKWebView 时,我们发现点击 App Store Links 时,有时候无反应,有时则会打开相应 App 的 App Store Web 页面,而不会直接调起本地 App Store。
另外,对于自定义的 URL Scheme 类型链接,在 WKWebView 里直接点击则会报错:Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL";
所以我们需要在 WKWebView 即将加载某一 URL 时,对这两种情况做一下处理,修改 WKWebView 的 delegate 中的 webView:decidePolicyForNavigationAction:decisionHandler:
方法,当遇到上述两种链接时,我们交给系统的 [[UIApplication sharedApplication] openURL:xxx]
来处理即可,代码如图如下:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { NSURL *url = navigationAction.request.URL; NSString *urlString = (url) ? url.absoluteString : @""; // iTunes: App Store link // 例如,微信的下载链接: https://itunes.apple.com/cn/app/id414478124?mt=8 if ([urlString containsString:@"//itunes.apple.com/"]) { [[UIApplication sharedApplication] openURL:url]; decisionHandler(WKNavigationActionPolicyCancel); return; } // Protocol/URL-Scheme without http(s) else if (url.scheme && ![url.scheme hasPrefix:@"http"]) { [[UIApplication sharedApplication] openURL:url]; decisionHandler(WKNavigationActionPolicyCancel); return; } decisionHandler(WKNavigationActionPolicyAllow); }
以上是“iOS中WKWebView如何处理URL Scheme和App Store链接”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。