在iOS应用程序之间同步数据的好方法是什么?

mar*_*wer 17 core-data objective-c ios data-synchronization

我正在开发一个应用程序,其数据管理是通过Core Data实现的,我正在研究如何实现一个功能来同步两个不同设备之间的数据(甚至最终在iDevices和Mac之间).

到目前为止,我还没有发现任何有趣或有用的东西,所以我要求你提供一个好的起点,指南或模型.你有没有意识到这样的事情?

更新

我已经开始对这个问题给予赏金.同步在iOS上可能是一项艰巨的任务,但是,有很多应用程序可以提供设备到设备的同步功能.我的问题是:他们是怎么做到的?什么是最好的方法?有哪些不同的解决方案?

更新2

由于iCloud已于近一年前发布,因此这个问题肯定已经过时了.我想让它保持活力,因为它可以提供有关设备之间移动数据同步的有趣见解.

oct*_*cty 11

如果你想自己做,这可能是一个非常好的,但具有挑战性的练习.我不知道任何第三方框架可以促进Apple之间的"iDevices"之间的P2P连接,而不是下面的"iDevices".如果您不想重新发明轮子,可以沿着这些线进行一些研究.我正在回答基于我(通过app服务器实现同步服务的经验) - 使用P2P方法的原则必须或多或少相同.

第一步是设计用于同步数据的协议.您可能需要自己回答的问题:

  • 关于数据同步,我需要了解什么?
  • 我想要同步哪部分核心数据模型?我是否应该更改当前模型以便于同步?
  • 我将使用什么序列化/反序列化机制?
  • 我如何能够跨多个设备唯一标识实体?
  • 我如何对数据进行版本控制?如何判断哪些实体需要同步?
  • 我是否需要还原同步操作?
  • 如何跟踪同步进度以及如何处理故障和异常情况?我如何通知用户这些?
  • 我是否更愿意"逐步"(我的模型的一部分)或"全局"(整个模型一次)同步?
  • 用户需要多久在设备之间同步?
  • 有安全考虑吗?我需要加密吗?
  • 等等

这几乎没有抓到表面.在你前进的过程中,你肯定会发现更多值得思考的事情.

接下来,确定您希望如何在设备之间进行连接.你似乎更喜欢无线解决方案,P2P类型.为此,我首先看一下这些工具:

  • GameKit(此框架具有用于通过蓝牙建立设备之间连接的API)
  • Bonjour(通过网络进行设备发现的Apple协议 - 请参阅BonjourWeb示例应用程序)+ BSD套接字

根据您之前讨论的设计决策,选择您认为最舒适的工具.我无法帮助你,因为我对他们中的任何一个都没有任何经验.正如Morpheus所说:

我只能告诉你门.你是那个必须走过它的人.

对不起,小幽默:)

最后,决定实现同步机制的解决方案.例如,您可以选择客户端 - 服务器模型(一个设备将侦听连接,另一个设备将启动它).

更多相关文件:

我希望这会给你一个起点.