iOS开发标准教程
上QQ阅读APP看书,第一时间看更新

1.2 iOS 9新特性

经过了iOS 7和iOS 8连续两次重量级的变革和更新,对普通的App开发者来说,iOS 9 SDK略归于缓和、平静,新的SDK在API和整体设计上并没有发生什么非常巨大的改变。但在功能上,iOS 9相比前代又有了比较多的提升。其中,在用户眼里最明显的就是iOS新字体以及iPad的分屏功能了,另外还在应用切换、Spotlight/搜索等细节上做了不少改变。本节主要讲解iOS 9的一些新特性。

1.2.1 新字体

说到iOS 9,就不得不说在iOS 9中San Francisco字体替换了Helvetica Nue字体,San Francisco字体会显得更锐利,可视性也更强。苹果的San Francisco字体最初是为Apple Watch智能手表所开发的,而现在已经准备将其全面运用到iOS及OS X系统中。值得注意的是,在2015年年初发布的12英寸新MacBook键盘上,苹果就已经开始运用这种新字体了。用户之前多次抱怨Helvetica字体过细,使阅读非常困难,现在终于可以解决了。San Francisco字体与Helvetica Nue字体的对比如图1.4和图1.5所示。

42241-00-016-1.jpg

图1.4 iOS 9

42241-00-016-2.jpg

图1.5 iOS 8

1.2.2 iPad分屏

iOS 9分屏功能为我们提供了更多的方式来畅享iPad和App带来的乐趣。iOS 9的多任务功能这个新特性主要针对iPad设备。iOS 9多任务分屏功能主要分为三项:SlideOver、SplitView和画中画。

(1)Slide Over功能:可以让用户在两个应用之间做到快速切换,该功能可在iPad Air、iPad Air 2、iPad mini 2、iPad mini 3、iPad mini 4上实现,如图1.6所示。

42241-00-016-3.jpg

图1.6 Slide Over

(2)Split View功能:可将屏幕分成两部分,同时运行两个应用。此功能目前只能在iPad Air 2上实现,如图1.7所示。

42241-00-016-4.jpg

图1.7 Split View

(3)画中画功能:用户在看视频过程中如果想查看或回复邮件,视频将以悬浮窗口的形式保留在屏幕上,大小和位置可任意调整。该功能在iPad Air、iPad mini上均可实现,如图1.8所示。

42241-00-016-5.jpg

图1.8 画中画

1.2.3 应用切换

应用切换采取了全新的卡片式翻页,一个应用预览卡片堆砌在另一个卡片上,卡片显得更大,同时推翻了iOS 8中最近联系人的设计,如图1.9所示。

42241-00-017-1.jpg

图1.9 应用切换(左:iOS 9 右:iOS 8)

1.2.4 Spotlight/搜索

当在主屏界面下拉呼出Spotlight的时候,会发现iOS 9的搜索框变成了圆角设计,还增加了语音听写的标识。在iOS 9的第一页屏幕向左滑动还会发现专门为Spotlight而设的页面,在这里可以看到Siri的建议联系人和建议应用,在此搜索框中还可以进行体育比分、货币转换等搜索操作,如图1.10所示。

42241-00-017-2.jpg

图1.10 Spotlight/搜索(左:iOS 9 右:iOS 8)

1.2.5 密码增强

iOS 9默认解锁密码从百年不变的四位密码升级为六位密码,这一改变可以进一步增强密码安全性,四位密码的组合为104种,而六位密码的组合有106种,如此看来,增加两位密码,安全性的提升绝对不在一个量级上,如图1.11所示。

42241-00-018-1.jpg

图1.11 密码(左:iOS 9 右:iOS 8)

1.2.6 系统内置地图功能增强

iOS 6中,苹果开始去谷歌化,最直观的感受莫过于官方苹果地图取代谷歌地图,但是最初的体验备受诟病,苹果地图在国内一度比较“鸡肋”地活着。iOS 9中,苹果在地图上大下苦功,引入名为“Transit”的通勤路线功能,可以为用户提供从步行到乘车整个完整的通勤路线。据悉,Transit功能将在全球众多城市适用,而在中国则支持超过300个城市,包括北京、上海、深圳、郑州等,如图1.12所示。

42241-00-018-2.jpg

图1.12 iOS 9系统内置地图

1.2.7 备忘录

这几年,苹果致力于将iOS系统打造成一个提高生产力的工具,备忘录作为用户日常可以接触到的系统内置生产力应用,当然会进行翻天覆地的更新。此次备忘录应用不仅可以记录文字,并且能够引入图片与地图信息,让一个文字应用彻底多媒体化。在输入文字的过程中,用户可以单击“选项”按钮,进行日程与工作的整理,曲线工具可以使用画笔对文档直接编辑,相比于iOS 8枯燥的文字页面,iOS 9的多方式编辑肯定会盘活备忘录应用。当然,这势必会冲击目前市面很多第三方生产力应用的市场,如图1.13所示。

42241-00-019-1.jpg

图1.13 iOS 9备忘录

1.2.8 低电量模式

新系统中添加了类似于Apple Watch的低功耗模式,省电模式通过限制网络活动的方法,能够进一步减少电耗。比如将不会再自动获取邮件,后台下载和应用更新也会完全暂停。这个模式可能还会限制网络速度,减小屏幕亮度以及动画等,如图1.14所示。

42241-00-019-2.jpg

图1.14 iOS 9低电量模式

1.2.9 3DTouch

在Apple Watch和最新MacBook产品中,应用的压力触摸技术将操作方式扩展至三维层面。而在iPhone 6s上,则更进一步加入重按反应。于是,这样的Multi-Touch就被苹果命名为3D Touch。简单来说,就是屏幕可以感知用户点力度,系统根据轻按和重按会做出不同反应。iOS 9中对3D Touch进行了支持。当然,这项技术只支持最新的iPhone 6s/6s Plus,如图1.15所示,轻按会打开相机,重按则会出现图1.15所示的界面。

42241-00-020-1.jpg

图1.15 3D Touch

1.2.10 App Thinning

App Thinning可让你的iPhone能够腾出更多的剩余空间,在应用升级过程中使用更少的数据。具体指的是用户从苹果商店下载安装App时,根据这个用户的具体设备类型及操作系统对App进行裁剪,达到占用最少的磁盘空间、发挥最大的兼容性等目的。经过优化后,用户不会下载完整应用,而是下载最简配置+特定需求项,从而缩短下载过程,腾出更多的内存空间。App Thinning目前包括Slicing-切片(iOS)、Bitcode(iOS,Watch OS)以及On-Demand Resources(iOS)。

(1)Slicing:iOS应用在不同平台(如Armv7、Arm64)上会编译成不同的执行文件,Slicing在App Store下载应用时会根据不同设备提供相对应的资源给用户下载安装。安装过程比以往更快,下载的数据更少。

(2)BitCode:Bitcode是LLVM编译器中间代码的编码,我们将中间代码提交给App Store,然后由App Store来进行编译(Compile)和连接(-Link),最终提供32位或64位的可执行文件供用户下载。目前iOS应用的中间代码提交是可选的,但是苹果已经要求Watch OS应用提交必须包含Bitcode。

(3)On-Demand Resources:从App Store上下载应用时,不必把整个应用所需要的资源下载下来,即部分资源放在云端或者App Store,需要的时候才会请求下载,也是为了缩减App包体积。

1.2.11 App内容加密传输

苹果一向很重视网络安全。iOS App在进行网络传输时,大部分都选用HTTP/HTTPS方式,在以往App开发时,苹果并未强制开发者使用HTTPS,但在iOS 9到来后,这种情况即将改变。

iOS 9把所有的HTTP请求都改为HTTPS:iOS 9系统发送的网络请求将统一使用TLS 1.2 SSL来强制增强数据访问安全,而且系统Foundation框架下的相关网络请求,将不再默认使用HTTP等不安全的网络协议,而默认采用TLS 1.2。服务器因此需要更新,以解析相关数据。

当然,HTTPS需要服务器支持,如果开发者不能立刻支持,也不用担心,可通过在Info.plist中声明,倒退回不安全的网络请求。

1.2.12 UI Test

在开发领域里,测试一直是保障产品质量的关键。从Xcode 4以来,测试在App开发中的地位可谓是逐年上升。从XCT框架的引入,到测试Target成为新建项目时的默认,再到2014年加入的异步代码测试和性能测试,可以说现在Xcode自带的测试框架已经能满足绝大部分单元测试的需求了。

但是这并不够。开发一个iOS App从来都是更注重UI和用户体验的工作,虽然简单的单元测试可以很容易地保证Model层的正确,却很难在UI方面有所作为。如何为一个App编写UI测试,一直是Cocoa社区的难题之一。

2015年,苹果给出了方便的测试方法,即Xcode自带的XCUITest的一系列工具。和大部分已有的UI测试工具类似,XCUI使用Accessibility标记来确定View,但因为是苹果自家的东西,它可以自动记录你的操作流程,所以我们自己只需要书写最后的验证部分就可以了,比其他UI测试工具方便很多。

如果不懂,没关系,只要知道,苹果提供了比以往更强、更易用的UI测试工具。

1.2.13 人工智能和搜索API

很多读者听到人工智能,也许都会有种高大上的感觉。的确,苹果已经开始布局了,虽然这看起来还很初级。比如插入耳机时播放你喜欢的音乐、推荐你可能会联系的人和打开的App等,这确实是很有意义的一步。现在的Siri只是一个问答系统,但这方面开发前景巨大,可发挥的空间也是无限的。

而搜索API实质上让App多了一个可能的入口。有些用户会非常频繁地使用搜索界面,这是一个绝好地展示App和提高打开率的机会。为何把搜索API和人工智能放在一起?其实这个API就是为当前人工智能服务的,正是这类API,使得即使用户不进入应用,也能搜索到应用上的一些信息,不再需要用户逐个寻找App,这便是人工智能的第一步。

笔者也希望,未来会有更大的变化!

1.2.14 Contacts Framework

在以前iOS开发中,涉及联系人相关的编程,代码都非常烦琐,并且框架的设计也不是Objective-C风格的,这使开发者用起来非常难受。在iOS 9中,苹果终于解决了这个问题,全新的Contacts Framework将完全替代AddressBookFramework,AddressBookFramework也将成为历史,直接被弃用。

1.2.15 Watch Connectivity

Watch Connectivity,从名字上理解,不难看出这是与Apple Watch相关的一个框架。Watch Connectivity是Watch OS 2里iPhone与Apple Watch通信的基础框架。

iPhone和Apple Watch的数据交换从iOS 8就有。在iOS 8中Apple Watch与iPhone之间只能通过Watch主动发起请求、iPhone响应这个请求的方式来完成一次通信。iPhone不能直接连接Apple Watch并向其发送数据。

iOS 9中,Apple Watch与iPhone之间通信,可以双向操作,既可以Apple Watch主动发送数据到iPhone,也可以iPhone主动发送数据到Apple Watch。

1.2.16 Swift 2

自从2014年苹果发布新一代编程语言Swift以来,经过了一年的改善和进步,Swift现在已经可以很好地担任App开发的工作了。而在此时,苹果推出Swift 2,并宣布于2015年年底开源Swift语言。Swift 2.0引入了很多新特性以确保开发者可以更快、更简单地构建应用,这些新特性包括更好的性能、新的异常处理API、可用性检查、支持Linux等。苹果在新发布的iOS 9中全面支持Swift。

Swift 2包含了许多新特性以及改进,其中官方也对其中几个新功能进行了介绍。

1. 异常处理模型

新的异常处理模型使用了开发者最为熟悉的Try、Catch、Throw关键字,并且还将完美支持苹果的SDK以及NSError。

2. 可用性

通过使用新的SDK,开发者可以操作平台的新功能,但某些老的操作系统可能并不支持这些新特性,所以开发者就需要额外的检查。在处理类似的兼容问题上,Swift非常得心应手。如果目标操作系统不支持某个API,那在编译时Swift将会报错。同样,开发者也可以使用#available来确保代码块可以运行于正确的操作系统版本上。

3. 协议可扩展

协议(Protocol)用于统一方法和属性的名称,而不实现任何功能。Swift 2增加了协议扩展,在标准包中可以使用它。当使用全局函数时,Swift 2已经为方法添加了统一的类型,这样开发者就可以使用函数链,以提高代码的可读性。

苹果在开发者大会上称,Swift将是下一个最重要的编程语言,20年后将无所不在。目前苹果给的Demo都是用Swift所写的,而网络上的许多开源库都已开始了对Swift的支持。从最新的TIOBE排行上来看,OC已跌出Top 10,而Swift正以前所未有的速度冲入前15。