iPad/iPhone应用程序之间的云同步
我有一个核心数据应用程序,最终成为iPhone/iPad通用应用程序。iPad/iPhone应用程序之间的云同步
我想实现云同步,使得iPhone和iPad的都运行该应用程序可以共享数据。我打算使用recently released Dropbox API。有没有人有关于这样做的最佳方式的任何想法? Dropbox API允许应用程序在云上存储文件。我在想的是在云上原始存储应用程序的数据库(sqlite),然后下载该数据库,但后来我意识到使用该方法会使合并更改(而不是替换整个数据库)变得非常困难。
任何想法表示赞赏。谢谢。
如果你能摆脱它,做同步(迄今为止)最简单的方法是有本地数据的副本:您上次上传(“旧”)的复印件,由局部变化所产生的副本(“雷”)及复印件现在从服务器(“他们”)下载。
然后,排序都在所有三个文件的记录,并穿行逐一:
- 如果老雷==,使用他们的
- 否则,如果老==他们的,用我的
- 否则你有冲突;做一些关于它的事情(例如,总是使用我的,也就是“最后作家获胜”)
请注意,“我的”或“他们的”或“旧的”可能不存在。上述规则在这种情况下仍然适用;如果您选择的结果是“不存在”,那么您将希望删除输出文件中的记录。
最后,上传生成的文件返回到服务器,这样它会为未来的家伙了“他们”的数据库。然后将新文件复制到本地“旧”和“我的”数据库。
(有更多的空间,高效的算法比上面......但目前还没有任何容易的人:)和磁盘空间是相当便宜的今天,特别是如果你把文件压缩。)
你可能会考虑GameKit共享数据。否则,你似乎只需要管理与中间文件服务器的同步。
我正在考虑该选项,但在两个Core Data数据库之间合并更改最简单的方法是什么? – indragie 2010-06-02 23:54:15
iPhone不支持OS X提供的同步服务(http://developer.apple。com/iphone/library/technotes/tn2009/tn2152.html#SECSYNCING),所以你需要编写自己的例程。考虑在记录中添加时间戳,并允许用户决定同步如何进行的策略(例如,将最新的时间戳记录发送到所有其他设备)。 – 2010-06-03 10:37:12
您可能想要将数据导出为本地sqlite格式以外的格式。如果我正在设计这样的东西,我认为JSON可能是我的选择格式。
我没有看过Dropbox的API,但他们支持上传和下载文件的差异,而不是整个文件,对不对?根据API是如何工作的,也许有你的应用程序了解他们的“差异”的格式,并与可能是更容易的工作...
有没有什么收获? – Yoo 2011-01-23 06:32:18
总是有一个问题:) – apenwarr 2011-02-03 10:55:11