作者:你可知马羔_523 | 来源:互联网 | 2023-07-22 15:59
更多文章:goofyy技术宅之前IOS8之前,打开应用内的网址一般会有两个方式,但是在IOS9,提供了一个新的应用内浏览网页的方式旧的方式1--Safari:使用openURL(_:)在Safari
更多文章: 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里面添加字段。
NSAppTransportSecurity
NSAllowsArbitraryLoads
如果不添加,会报错
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,打完收工