热门标签 | 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,打完收工



推荐阅读
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 在使用 iOS 应用时,遇到网络请求错误是常见的问题。本文将探讨两种常见的错误代码 -1003 和 -1001,并提供详细的解释和解决方案。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文探讨了在iOS平台上开发BLE(蓝牙低功耗)应用程序时遇到的挑战,特别是如何实现应用在后台模式下仍能持续扫描并连接蓝牙设备。文章提供了具体的配置方法和常见的问题解决方案。 ... [详细]
  • iOS 开发技巧:TabBarController 自定义与本地通知设置
    本文介绍了如何在 iOS 中自定义 TabBarController 的背景颜色和选中项的颜色,以及如何使用本地通知设置应用程序图标上的提醒个数。通过这些技巧,可以提升应用的用户体验。 ... [详细]
  • 使用原生 AJAX 处理文件下载与 IE 浏览器图片显示问题
    本文探讨了如何利用原生 AJAX 实现文件的 POST 或 GET 请求下载,并监控下载状态。同时,针对 IE 浏览器及部分移动设备浏览器因路径问题导致图片无法正常显示的情况,提供了有效的解决方案。 ... [详细]
  • 本文基于作者使用Flask框架处理后端逻辑和原生JavaScript及jQuery进行前端开发的经验,详细介绍了如何在前后端之间高效地传输JSON数据。文章不仅涵盖了技术实现细节,还提供了实用的代码示例。 ... [详细]
  • 本文介绍如何使用Python编写一个简单的爬虫程序,从知乎问题页面抓取美腿图片。环境配置包括Windows 10操作系统,Python语言及其相关库。 ... [详细]
  • 1.选择一个翻译页面,我选择的是有道词典(http:dict.youdao.com)2.随便输入一个英语单词进行翻译,然后查看源文件,找到 ... [详细]
  • 在现代移动应用开发中,尤其是iOS应用,处理来自服务器的JSON数据是一项基本技能。无论是使用Swift还是PHP,有效地解析和利用JSON数据对于提升用户体验至关重要。本文将探讨如何在Swift中优雅地处理JSON,以及PHP中处理JSON的一些技巧。 ... [详细]
  • 本文详细探讨了在Java TCP编程中,如何理解和测量并发连接数、请求数及并发用户数,并提供了实际应用中的测试方法和优化建议。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 本文介绍了如何使用JavaScript来检测Web页面是通过Safari浏览器的标准模式打开,还是作为独立应用(无地址栏)从iPad的主屏幕启动。 ... [详细]
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社区 版权所有