objective-c - iOS 应用之间同步数据有什么好的解决方案?

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

<分区>

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

直到现在我还没有发现任何有趣或有用的东西,所以我请求你提供一个好的起点、指南或可遵循的模型。你有没有意识到这样的事情?

更新

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

更新2

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

最佳答案

如果您想自己做,这可能是一个非常好的但具有挑战性的练习。我不知道有任何第 3 方框架可以促进“iDevices”之间的 P2P 连接,除了下面的那些,来自 Apple。如果您不想重新发明轮子,您可以按照这些思路进行一些研究。我是根据我通过应用服务器实现同步服务的(一点点)经验来回答的——原则必须或多或少与 P2P 方法相同。

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

  • 关于 data synchronization 我需要了解什么? ?
  • 我想同步核心数据模型的哪一部分?我是否应该更改我当前的模型以促进同步?
  • 我将使用什么序列化/反序列化机制?
  • 我如何能够跨多个设备唯一地标识实体?
  • 我将如何对我的数据进行版本控制?如何判断哪些实体需要同步?
  • 我需要能够恢复同步操作吗?
  • 我将如何跟踪同步进度以及如何处理失败和异常情况?我将如何通知用户这些?
  • 我更喜欢“增量”(模型的一部分)还是“全局”(一次同步整个模型)?
  • 用户需要多长时间在设备之间同步一次?
  • 是否有任何安全注意事项?我需要加密吗?
  • 等等

这只是触及表面。在前进的过程中,您一定会发现更多需要思考的事情。

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

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

根据前面讨论的设计决策,选择您觉得最舒服的工具。我帮不了你,因为我对他们都没有任何经验。正如莫菲斯所说:

I can only show you the door. You're the one that has to walk through it.

抱歉,有点幽默:)

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

更多相关文档:

我希望这能为您提供一个起点。

关于objective-c - iOS 应用之间同步数据有什么好的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6156968/

相关文章:

ios - 如何使用谓词访问另一个表的数据?

iphone - Objective C 中的部分模糊 UIImage

ios - 双击识别器不适用于 NSTimer 运行

ios - 在模拟器上模拟 2 指单击

ios - 捕获图像时出现AVCapturePhotoCaptureDelegate错误

iphone - Objective-C : Is there a way to call class methods on a class object without compiler complaints?

ios - 在快速输入期间使用搜索栏进行搜索时 TableView 崩溃

ios - 来自 plist 的字典

iOS滚动到 View 文本字段之外

objective-c - 创建时删除 NSArrayControllers selectedObjects