iOS5

10月4日苹果就要召开秋季的新产品发布会了,iPhone5应该就会在这次发布会上闪亮登场,看到的消息似乎硬件上不会有质的升级,无非就是更大的屏幕更新的CPU,相比之下更重要的变革倒是在iOS5上,我在结束了NBA2K12 PSP版的开发后,毫无心理准备地转职变身为了一位苹果开发者,负责《文明》iOS版本的更新和开发工作,首要的任务就是要为游戏加入配合iOS5的新功能iCloud。

这次iOS5最大的噱头就是iCloud了,苹果也搞起了浮云系统……意在为用户所有的Mac、iOS设备提供一个无缝的并且是安全的通道,既可以在不同的设备之间共享数据互通有无也可实现无需iTunes的随时随地的备份,几周的使用下来感觉苹果对自己的云系统的服务定位不同于Ubuntu One或者DropBox之类,而是有限而明确的:iCloud确实是只提供了一个5G的网络硬盘,和一般意义的网盘没有本质区别,只不过是和iOS高度集成罢了,但是苹果在系统中对用户开放的功能仅仅是备份和恢复而已,除此以外用户无法利用iCloud做其他任何的事情。苹果系统自己本身只实现了最基础的功能,而将剩下所有的对iCloud的利用的权利都开放给了应用程序的开发者,开发者可以利用iCloud实现想实现的读写同步等等功能,用户只能借由特定的应用程序来实现自己的需求。并且苹果对于iCloud的使用流程,同步规则等有着高度的限制,UIDocument类的使用就是代表着苹果希望开发者是如何来使用iCloud的,如果你全部重载UIDocument类的函数而自己来实现iCloud的操作,可以,但是苹果强烈建议你仿照UIDocument的流程,并首先调用父类的实现。

这么看来苹果对iCloud设计的宗旨就是对用户是完全透明的,所有的操作都要是在后台不知不觉的完成的,越是让用户感觉不到它的存在就越接近苹果的设计原则,其实不单是对用户透明,对开发者来说都是相当的透明的……不过说到网络存取就一定会涉及到版本冲突的问题,在这种情况发生时,一般都会有提示,由用户来进行选择,但是苹果强烈建议由开发者解决iCloud上的版本冲突问题而不由用户来选择,除非万不得一,给出的理由仅仅是用户的选择可能会影响同步的时间,这点比较让人费解,不知道是苹果的设计原则还是有着同步上的技术问题。

《文明》对iCloud的利用是存档的同步,让不同的设备之间进行存档的同步,比如说我在家中用iPad进行游戏,然后我需要出门了,出门的路上我可以使用iPhone继续游戏,所有你需要做的就是出发前存个档,出门后读个档,当然如果我们的设计还会改变的话,连这一步都完全可能省掉,这一点iCloud是支持的。
虽然听上去很诱人,不过目前的调试中感觉iCloud还是存在很多问题的,希望仅仅是因为Beta版的缘故。首先是不稳定,碰到了好几次,已经将文件存到iCloud上,但是系统Setting中看不到的情况几个小时甚至一天后才能看到,亦或是时而能连上,时而联不上,但我想这个问题应该是正式版中会解决的。然后同步时间的不确定,这一点我觉得很有可能会成为一个硬伤,苹果越是希望面对开发者是简单的其实就越是给开发者带来麻烦,iCloud的同步,程序并没有太高的控制权,程序中能做的是跟踪到文件的修改,并发送消息,至于什么时候真正的开始上传,是由系统来挑选一个“合适”的时机,目前我这边使用的情况来看5秒钟到5分钟之间不等,当然这么做的原因肯定是iCloud服务器要首先确保没有其他设备在同时上传,但让本地的数据就处在一个未知的状态,尤其是服务本身对用户是完全透明的,如果用户在这时候关机呢?下一次开机再上传很有可能就已经处在版本冲突的状态了,这使得开发者不得不要考虑大量的非正常情况以保证用户的数据不会无缘无故的丢失或者无法完成同步。

十月底的更新完成后,对于iCloud的使用应该会有一个比较系统的心得,到时候会总结下来希望能帮到别人吧。

最后晒一张办公桌的照片,这项目不大阵势唬人啊,光我就有两台iTouch,一台iPad,还有一台编译用的iMac,这么贵的机器给程序用,可把我们组的美术给馋坏了…………

MyDesk