您的位置:首页 > 移动开发 > IOS开发

ios9 SFSafariViewController完整web体验

2015-09-01 18:22 519 查看
更多文章: goofyy技术宅

之前IOS8之前,打开应用内的网址一般会有两个方式,但是在IOS9,提供了一个新的应用内浏览网页的方式

旧的方式

1--Safari:使用openURL(_:)在Safari中展示页面,会不得不让用户离开你的应用。
2--自定义浏览体验:你可以利用WKWebView或UIWebView从头开始创建浏览体验。


在IOS9增加了一种新的应用内浏览网页的方式

SFSafariViewController


SFSafariViewController :通过SFSafariViewController,你几乎可以使用所有Safari的一些便利特性,而无需让用户离开你的应用。

在IOS9之前,一般我们浏览应用无非就是用系统自带的safari,但是通过应用来跳转到浏览器,给用户的体验总是不是很好,用户毕竟离开了你的应用

自定义与webView或许是妥协的一点,但是如果用户在APP中的Web体验的属于第一个用例,那么view controller可能不是你需要的。在这种情况下,您将显示自己的控件和内容,并且可能需要大量的自定义。 如果你发现你的应用适合这种情况下,使用WKWebView 。它是UIWebView的继任者,并包括几个增强功能,如使用 Nitro Javascript engine。这种方法可以让你从头开始构建整个用户界面。还有其他的功能,如安全加载文件和使用WKWebsiteDataStore查询cookies。这些可能就让我们头痛了。

SFSafariViewController

在IOS9.苹果面向开发者提供了SFSafariViewController在不同的应用之间,浏览网页的体验是不同的,这可能会让用户感到疑惑。某些界面可能缺少用户期望的东西,比如表示网页加载进度的进度条。 此外,你也不能使用Safari的全部功能。这包括阅读器视图,自动填充功能用到的iCloud钥匙串等等。如果你想在iOS
9 之前实现这些功能,就不得不让用户完全离开你的应用,去到Safari里打开这些网页。。而SFSafariViewController类解决了所有这些问题。

应用Demo举例



创建3个Button。然后对不同button做跳转

safari跳转打开

let url = NSURL(string: "http://www.goofyy.com")
@IBAction func openUrlOnSafari(sender: UIButton) {

UIApplication.sharedApplication().openURL(url!)
}


用UIWebView打开

@IBAction func openUrlOnWebView(sender: UIButton) {

let webView = UIWebView(frame: self.view.bounds)
let nsurlRequest = NSURLRequest(URL: url!)
webView.loadRequest(nsurlRequest)
//webView.reload()
self.view.addSubview(webView)

}


使用UIWebView的时候注意。需要在Info.plist里面添加字段。

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>


如果不添加,会报错

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app‘s Info.plist file.


这是因为 在iOS9 beta中,苹果将原http协议改成了https协议,使用 TLS1.2 SSL加密请求数据

在SFSafariViewController里面打开URL

@IBAction func openUrlOnSafariController(sender: UIButton) {

let safariViewController = SFSafariViewController(URL: url!)
self.presentViewController(safariViewController, animated: true, completion: nil)
}


然后就搞定了。看一下SFSafariViewController的网页状态。



是不是碉碉哒。哈哈期待9天后的IOS9,打完收工
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios9 swift ios goofyy