首先先下载好新的 Xcode5 后,首次打开弹出版权说明和其他合同信息,点 Agree 后开始载入文件,瞬间机器风扇狂转。
过了一会,载入完毕后,看一下,首次打开 Xcode 的扁平化 UI 吧!
非常的平!和 Xcode4.6 比,看着舒服了点。然后新建工程,明显可以看到有新的 SDK,SpriteKit。
这里说一下,这个看开发文档上的内容,就是传说中 Cocoa2d 的山寨版官方 SDK 包,相似度90%!然后 Cocoa2d 的作者貌似在观望,是否要给 Cocoa2d 增加新的 API,还是放弃 Cocoa2d ? 专心 Cocoa2d -x的版本开发...好了,这也是话外题,虽说是山寨包,但是总归是官方出品,感觉上要舒服一点。
还是新建一个单页面工程,看到整体界面小清新了不少;设置方面,多了一个 Capabilities 的选项卡,里面的内容都是一些开关,比如 Maps,Background,iCloud 等等,具体下文有截图:
然后是图标有了专属的文件夹,不像 Xcode4 时候在工程里直接拖入。
然后这次,我创建了一个 VoiceSpeak 的工程,看含义就知道,是测试语音的!
根据开发文档,引入 AVFoundation 类,来进行语音翻译,具体实现如下图所示(详细内容都有注释说明,我就不多说了)
随后运行模拟器,输入文字即可朗读,如下图
随后开始后台测试,在IOS7以前,IOS只允许:1、音频播放;2、后台定位服务;3、IP 电话。
这三种 APP 进行后台操作,其他 APP 只有在后台运行 10 分钟的权限,所以说这个后台是非常鸡肋的功能,在这次 iOS7 中,对后台开放度大幅提升,不过,相对的,对电池的消耗也就严重多了!
不说废话,看图说话,首先,在Capabilities选项卡中,需要开启background的选项,并且勾选Background Fetch.否则是不允许后台运行的,如下图所示:
这样后,在 info.plist 中会自动在 Required background modes 中添加 fetch,让 iOS 知道这是一个支持后台的 APP。
再来看具体实现:首先在 application:didFinishLaunchingWithOptions: 中设置 minimun background fetch interval 类型为 UIApplicationBackgroundFetchIntervalMinimum(默认为 UIApplicationBackgroundFetchIntervalNever),然后实现代理方法 application:performFetchWithCompletionHandler: 中实现数据请求
我随便copy了一下语言朗读的功能:
这样后,程序已经支持后台运行,在Schemes中勾选 Background Fetch(Launch due to a background fetch event),随后运行程序,可以看到程序并没有被打开,但是已经后台发音读出了其中的内容,如下图:
具体语音就不放上来了,我调整了Siri 的语调语速,变的异常骚包,非常符合蜗牛的形象~