iCloud 马上就要和广大果迷见面了,相信不少果迷已经对该服务期待已久。被冠以 iOS 5 最重要更新之一的 iCloud 到底是如何为用户服务的呢?下面带果迷们一起了解一下 iCloud 的内部构造。
iCloud 最简单的存在形式其实就是一个特定的文件夹,它位于 iOS 设备的 /private/var/mobile/Library/Mobile Documents/ 目录下。该目录中保存有各应用共享至云端的所有应用数据。
应用程序对该目录有部分读写权限,该权限是开发人员特有的。对于密码钥匙串,开发人员可以在各应用间共享云端数据。比如,X 公司开发的所有应用可以共享、查看以及更新相同的文件集。你无法共享你开发者账户以外的数据,所以我的应用无法看到 X 公司的文件,反之亦然。
iOS 系统监控着 Mobile Documents 文件夹。当文件被更改,设备会自动的将这些更改上传至云端。从而这些更改就可以传输至同一账号绑定的所有设备上。这些操作都由本地操作系统服务进行处理,应用程序不直接参与其中。
相反,应用程序通过订阅不同种类的通知来让应用知道***发生的更改。然后,它们可以通过对比本地和 iCloud 端的数据差异从而来处理数据版本冲突。
至于开发者如何做就是他们的事了。他们可以选择“最近更改有效”策略。或者他们可以结合一些其他方式的更改。应用程序的职责就在于确保不同硬件设备单元上的数据保持一致,同时也需要可用的网络连接来处理这种一致性。
当用户失去网络连接的时候,麻烦事就来了。比如,你也许在没有网络连接的航班上编辑待办事项,与此同时你的伴侣在他或她所在的城市正在更新同一份待办事项。开发者们为此工作了数月,研究如何在同时接受双方修改的前提下结合这些更改并更新目标文件的策略。
***,iCloud API 接口方式或许会很少。它实际上就只是一个异地同步的存储文件夹。对于开发者来说,诀窍在于如何考虑时间、空间、连接不同方面对文件夹的影响,因为该文件夹必须适应于用户的更新。