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

时间:2011-05-27 19:44:34

标签: objective-c ios core-data data-synchronization

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

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

更新

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

更新2

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

4 个答案:

答案 0 :(得分:11)

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

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

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

这几乎没有触及表面。当你前进时,你肯定会发现更多需要考虑的事情。

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

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

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

  

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

抱歉,小幽默:)

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

更多相关文档:

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

答案 1 :(得分:3)

同步数据非常棘手。简单的解决方案比没有解决方案更糟糕。

要获得关于此事的良好精神指导,请查看the authors of Things正在使用即将推出的云同步功能执行的操作。我希望他们将发布一个同步API,开发人员可以通过它实现同步服务。但即使他们把它保留在自己身上,他们也能很好地展示出真正完成任务所需要的那种自我反省。

答案 2 :(得分:2)

“适用于iOS的Couchbase”可能会满足您的需求

https://github.com/couchbaselabs/iOS-Couchbase

根据自述文件:

Mobile Couchbase for iOS

Apache CouchDB on iOS provides a simple way to sync your application
     

跨设备的数据并提供云   备份用户数据。与其他不同   云解决方案,数据托管在   Couchbase Mobile的设备,所以   即使网络瘫痪或缓慢   (飞机,地铁,后院)   应用程序响应用户。

What this means for you:

You can embed the rock solid distributed database, Mobile
     

Couchbase,在您的iOS设备上。       您的iOS应用程序可以使用Apache CouchDB经过充分验证的同步   技术。       如果您< 3 CouchApps,您可以将它们部署为iOS应用程序。

答案 3 :(得分:-1)

我会从Apple API Sync Services开始,看看它是否符合您的需求。原则上,它可以让您在所有Apple设备和服务之间同步。