iPad / iPhone应用程序之间的云同步

时间:2010-06-02 23:30:26

标签: iphone ipad synchronization cloud dropbox

我有一个核心数据应用程序,最终将成为iPhone / iPad通用应用程序。

我想实施云同步,以便运行应用程序的iPhone和iPad可以共享数据。我打算使用recently released Dropbox API。有没有人对最佳方法有什么想法呢? Dropbox API允许应用程序在云上存储文件。我想的是原始存储云上应用程序的数据库(sqlite),然后下载该数据库,但我意识到使用该方法会使合并更改(而不是替换整个数据库)变得非常困难。

任何想法都表示赞赏。感谢。

4 个答案:

答案 0 :(得分:5)

如果你可以逃脱它,最简单的同步方法(到目前为止)就是在本地拥有三个数据副本:你上次上传的副本(“旧”),本地更改(“我的”)生成的副本和从服务器下载的 副本(“他们的”)。

然后,对所有三个文件中的所有记录进行排序,并逐个遍历:

  • 如果老= =我的,请使用他们的
  • 如果旧的==他们的,请使用我的
  • 否则你会发生冲突;做一些事情(例如,总是使用我的,也就是“最后的作家获胜”)

请注意,“我的”或“他们的”或“旧的”可能不存在。上述规则仍适用于该情况;如果您选择的结果是“不存在”,那么您将要删除输出文件中的记录。

最后,将生成的文件上传回服务器,以便它成为下一个人的“他们的”数据库。然后将新文件复制到本地“旧”和“我的”数据库。

(有比以上更节省空间的算法...但是没有更简单的算法:)现在磁盘空间相当便宜,特别是如果你压缩文件。)

答案 1 :(得分:1)

您可能希望使用其他方法进行同步。您将要处理的数据类型是什么?

我使用轻量级导轨后端取得了很大成功。

答案 2 :(得分:0)

您可以查看GameKit来共享数据。否则,您似乎只需要管理与中间文件服务器的同步。

答案 3 :(得分:0)

您可能希望将数据导出为本机sqlite格式以外的某种格式。如果我正在设计这样的东西,我认为JSON可能是我选择的格式。

我没有看过Dropbox API,但它们支持上传和下载文件差异,而不是整个文件,对吧?根据API的工作方式,可能让您的应用程序理解其“差异”格式,并使用它可能更容易......