热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ios9SFSafariViewController完整web体验

更多文章:goofyy技术宅之前IOS8之前,打开应用内的网址一般会有两个方式,但是在IOS9,提供了一个新的应用内浏览网页的方式旧的方式1--Safari:使用openURL(_:)在Safari

更多文章: goofyy技术宅

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

旧的方式

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

在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,打完收工



推荐阅读
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 作为一名新手,您可能会在初次尝试使用Eclipse进行Struts开发时遇到一些挑战。本文将为您提供详细的指导和解决方案,帮助您克服常见的配置和操作难题。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文介绍了在使用Visual Studio 2015进行项目开发时,遇到类向导弹出“异常来自 HRESULT:0x8CE0000B”错误的解决方案。通过具体步骤和实践经验,帮助开发者快速排查并解决问题。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
author-avatar
你可知马羔_523
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有