重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

iOS中WKWebView如何处理URLScheme和AppStore链接

这篇文章主要为大家展示了“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链接”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站栏目:iOS中WKWebView如何处理URLScheme和AppStore链接
文章起源:http://cqcxhl.cn/article/jisgpc.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP