iOS WKWebView无法处理URL Scheme和App Store链接的问题解决
2019/7/9 22:41:56
本文主要是介绍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); }
关于使用 WKWebView 的更多 Tips,可以参考:https://github.com/ShingoFukuyama/WKWebViewTips
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对找一找教程网的支持。
这篇关于iOS WKWebView无法处理URL Scheme和App Store链接的问题解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12Axios库资料:新手入门必读教程
- 2024-11-11Axios库项目实战:新手入门教程
- 2024-09-29Axios库教程:初学者必备指南
- 2024-08-29Axios库资料:新手入门指南与基本使用教程
- 2024-03-14system bios shadowed
- 2024-03-14gabios
- 2024-02-07iOS应用提交上架的最新流程
- 2024-02-06打包 iOS 的 IPA 文件
- 2023-12-07uniapp打包iOS应用并通过审核:代码混淆的终极解决方案 ?
- 2023-11-25uniapp IOS从打包到上架流程(详细简单) 原创