小议iPhone OS 3.0
by Robin Lu on Mar.18, 2009, about iphone
今天凌晨,苹果宣布了iPhone OS 3.0 。上午起来看了视频,又翻了翻文档。从开发者的角度,说说我比较感兴趣的几个更新。
Apple Push Notification Service
一直被当作后台运行程序的替代品。仍然不能有后台运行程序,解释的也很清楚了,是耗电量和待机时间不允许。但可以通过Push来唤醒应用程序。这种方式的特点是无触发不执行,执行是被动的。虽然不可能100%解决所有后台运行程序的需求,但也算提供了一种比较通用的模式。
基本原理如下图所示:

先将消息推送给Apple的APNS,由它转发到相应的iPhone上,再由iPhone OS通知到相应的程序。
可以看到,所有的消息都不是通过网络直接发送到iPhone,而是通过苹果的APNS服务转发的。这将对APNS服务有很高的要求。这也是苹果一再推迟这一功能的原因。以往年苹果网络服务的经验来看,这个服务在推出以后也许要经过一段时间才会稳定。希望苹果这次是有备而来吧。
Accessory Support
我个人认为这个功能是这次升级的一个亮点,有极大的想像空间。附属外设可以通过30-pin连接头或者蓝牙接入。我大概看了下文档,和我想像的有些出入的地方是,附属设备必须预先支持iPhone,即使用蓝牙接入方式也一样。iPhone OS 3并没有象Mac OS X 10那样,提供一个完全的蓝牙API,而是做了更高层次的封装,只有符合协议(技术层协议)的设备才能接入。想通过iPhone OS 3直接读取Wii Balance Board 中的数据目前还不可行。
In App Purchase Support
商业模式上的扩展。SDK中新加入了Store Kit 。苹果还是挺狡猾的。这个事情,它不做,总有人会做,与其让别人做,不如自己先做了,还能再收个30%。对于最终用户,直接使用iTunes帐号付款也比再引入一个付款方式要简便,也许不少应用不得不因此屈尊交这笔苹果税了。
Peer to Peer Support
这一功能是以Game Kit的方式加入的,不过苹果一再声明完全可以用在非游戏的应用上。这一功能建立在蓝牙之上的,但同样做了封装,应用仍然无法直接和蓝牙接口打交道。连接服务以session的方式维护,一个应用可以这个P2P网络中扮演三种角色,server, client, 或者peer(server+client)。两个设备之间只能有一条蓝牙连接,但是在这一个连接上可以支持多个sessions的服务。传输内容并不受限制,可以自己定义。
Core Data
其实我们早就可以在iPhone中使用SQLite,不过到iPhone OS 3,才有了类似Mac OS X中的Core Data 。这意味着,对开发者来说,使用SQLite的门槛降低了。其他好像也没什么了。
April 20th, 2009 on 2:48 am
小僧有個問題, 是不是用Core Date之後, 就不必寫SQL語句楽呢?
April 20th, 2009 on 11:10 am
这要看你的应用的复杂程度了.