最近用了下uiwebview,说实话真不错。至少在ui表现方面,使用html写界面可以省去很多功夫。但是uiwebview其实还是存在着很多问题的。一个最关键的问题就是对https双向(单向)认证的支持。
其实看看api说明基本已经明白双向的https是不可行的了,那么单向又如何呢?答案是可行,但有问题。
在进行单向认证的过程中,uiwebview其实还做了一步证书的认证,就是匹配证书中的域与当前访问的域名是否相同,不相同则拒绝。这就使得用uiwebview访问https://alipay.com和https://www.alipay.com会得到两个不同的结果,而如何才能不进行这一认证,单从api上我还是没看到好方法。
既然uiwebview本身的功能有这么多限制,那么就会想是否通过别的方式来实现数据的传输(request和response),而只使用uiwebview进行html语法的解析(渲染)呢?这个思路是可行的,但是还是有问题。
首先支持这样的做法的一个基础就是uiwebview的一个delegate
webView:shouldStartLoadWithRequest:navigationType:
在每次uiwebview真正去请求前都会进入这个delegate,而通过delegate中的request参数,我们就可以获得这次请求的url,body,header等各个参数,有了这些参数就可以使用其它的方法去访问服务器,得到返回的数据,参看下面的文章,列出了几种直接访问服务器的方法
http://www.cocoachina.com/bbs/read.php?tid-55317.html
得到数据后通过uiwebview中的另一个消息
loadHTMLString:baseURL:
就可轻松展现页面。不过我又要说了,可能还是有点问题。
当你尝试去显示的页面中有这么一张图片,它的属性src不是通过绝对路径而是相对路径显示的时候,你会发现图片无法加载,通过上面方法的第二个参数baseURL告知其基地址,从而使相对路径成为绝对路径得到图片信息。不过在我的测试过程中却发现了一些https单向的网站却始终无法通过uiwebview得到图片的问题,而且也没有任何错误提示,猜测下最大的原因可能还是关于证书的验证使得链接又一次被拒绝了。
总之,如果把uiwebview拿来用作界面的显示确实是个不错的方案,但是现在的uiwebview功能还是太少,依然存在着一定的问题。
分享到:
相关推荐
【描述】:描述中的链接指向了一个CSDN博客文章,作者分享了关于如何在iOS项目中使用UIWebView的详细步骤和代码示例。UIWebView允许开发者在iOS应用内嵌入网页,提供类似浏览器的功能,用户可以在不离开应用的情况下...
在iOS开发中,UIWebView是苹果提供的一种原生控件,用于在应用程序内展示网页内容。这个项目"ios-UIWebView简易浏览器"很显然是一个基于UIWebView实现的简单Web浏览器应用。下面我们将深入探讨UIWebView的基本用法、...
在iOS开发中,UIWebView是苹果提供的一种用于在应用程序中展示网页内容的组件。它允许开发者在应用内部加载HTML、CSS和JavaScript代码,为用户提供一个类似Safari浏览器的浏览体验。下面将详细介绍UIWebView的使用,...
在iOS开发中,UIWebView是苹果提供的一种用于在应用程序中嵌入网页内容的组件。它允许开发者在App内部展示HTML、CSS和JavaScript等Web技术构建的内容,为用户提供一种与Web服务交互的方式。本资料“IOS之UIWebView的...
ITMS-90809: Deprecated API Usage – Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information. 但是项目...
首先,我们需要了解iOS中的URL Loading System,这是一个系统级别的网络请求框架,UIWebView正是利用这个系统来加载网页内容。NSURLCache作为URL Loading System的一部分,负责缓存网络请求的数据。当UIWebView请求...
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Unity IOS审核被拒,解决办法,去网上看了好多帖子,...
首先,我们需要理解iOS中的网络请求流程。当UIWebView加载一个网页时,它会通过URLProtocol发送请求到网络。默认情况下,iOS系统会使用NSURLSession来处理这些请求,其中包含了自动的HTTP缓存策略。然而,这种默认...
总之,这个资料包对于想要深入理解iOS中网页视图展示的开发者来说是非常有价值的,无论是对于还在使用UIWebView的老项目进行优化,还是新项目中直接采用WKWebView,都能从中获取实用的知识和经验。通过学习和实践,...
首先,我们需要理解iOS中的缓存系统。iOS提供了URLCache类,这是一个用于处理HTTP请求的缓存系统。当使用UIWebView加载网页时,如果服务器返回了适当的缓存控制头(如"Cache-Control"或"Expires"),URLCache会自动...
UIWebView是iOS早期提供的一个组件,用于在应用中嵌入网页内容。然而,由于其存在性能和安全问题,Apple推出了WKWebView,它使用WebKit框架,提供了更高效、更安全的网页加载机制。WKWebView在内存管理、JavaScript...
在iOS开发中,UIWebView是苹果提供的一种用于加载和展示网页内容的组件。然而,UIWebView在加载网页的过程中,没有内置的loading提示效果,这可能导致用户在等待网页加载时感到困惑或不耐烦。因此,自定义一个加载...
以上是关于“iOS开发之UIWebView”的基本知识点。实际项目中,开发者可能会遇到更多复杂场景,如JavaScript与本地应用深度交互、处理登录状态、拦截请求等,这些都需要根据具体需求进行定制开发。UIWebView02这个...
在iOS应用开发中,UIWebView和WKWebView是两种常见的用于展示网页内容的控件。它们允许开发者在原生应用中嵌入HTML、CSS和JavaScript代码,实现丰富的交互体验。本篇文章将深入探讨如何在iOS应用中,特别是针对...
在iOS开发中,UIWebView是苹果提供的一种用于展示网页内容的控件,它允许开发者在应用内部嵌入网页,提供类似浏览器的功能。本篇文章将详细讲解UIWebView的使用,包括初始化、加载方式以及一些常用属性和变量。 ...
在iOS开发中,UIWebView是苹果提供的一种原生控件,用于展示网页内容。它可以加载HTML、CSS和JavaScript代码,并且支持与Objective-C代码进行交互,实现App与Web页面的深度融合。本示例将深入探讨如何通过UIWebView...
此修补程序适用于在Angular中引起无限摘要错误的iOS9 UIWebView回归。 该补丁可以应用于Angular 1.2.0 – 1.4.5。 较新版本的Angular引入了解决方法。 要应用此补丁程序,请在您的应用程序中加载/捆绑此文件,并将...
在iOS应用开发中,UIWebView和WKWebView是两种常见的用于展示网页内容的组件。它们都是UIKit框架的一部分,允许开发者在iOS应用中嵌入HTML、CSS和JavaScript内容。然而,这两个组件在性能、安全性和功能上有显著的...
在iOS开发中,UIWebView是苹果提供的一种用于展示网页内容的控件,它可以加载HTML、CSS、JavaScript等Web资源。然而,UIWebView在加载网页时默认并不会显示加载进度,这可能会给用户带来不友好的体验,尤其是在网络...
在iOS开发中,UIWebView是用于展示网页内容的重要组件,但它常常被诟病为内存消耗大,容易引发应用性能问题。本篇文章将深入探讨如何针对UIWebView进行优化,以实现内存的有效管理和降低。 首先,我们需要理解...