iOS 应用的基于时间的同步
Posted
技术标签:
【中文标题】iOS 应用的基于时间的同步【英文标题】:Time-based syncing for iOS app 【发布时间】:2013-06-26 19:54:48 【问题描述】:我正在尝试实现一个简单的同步解决方案,以便在我的应用程序的各种实例和我的服务器之间传播一些设置。这些设置的更改很少发生,并且仅发生在客户端上。我想要一些相当健壮而又不会过火的东西。
我的策略是跟踪设备上未同步的更改,并在同步时将这些更改发布到服务器。服务器应该能够拒绝在该设置的先前已知同步之后发生的更改。为了实现这一点,应用程序为每个设置存储一个“更新”日期,服务器将其与它存储的相同设置的类似字段进行比较。如果客户端的日期早于服务器知道的最新设置同步(来自不同设备),则该设置的同步将被拒绝。
最后(希望是)解决客户端和服务器时钟之间的差异。
我最初的想法是发送(连同更新的设置),客户端的当前本地日期时间。收到后,服务器会将客户端的时间与自己的时间进行比较,并知道如何调整客户端设置上的“更新”时间戳。这在我看来原则上是合理的,但我该如何解决以下两个问题?
如果客户端设备的时钟在设置更新后发生更改,然后再尝试同步,该怎么办? 谁知道同步请求需要多长时间才能到达服务器?因此,在收到它时,客户端提供的“系统时钟”实际上已经过了几秒或几分钟。【问题讨论】:
阅读:与Vector Time Pairs同步。不需要时钟,但可以选择使用时间来解决冲突。 我之前已经尝试阅读此文档几次,但并没有深入了解,但还是感谢您。我最终会再试一次。认为这对我的目的来说可能是矫枉过正。 我同意。这很难读,但我已经实现了它以在系统之间同步数据。一旦你理解了它,编码就不会太难,而且效果很好。 【参考方案1】:您应该按照UTC
做所有事情以避免时区问题。这并不能解决用户时钟设置不正确的问题,因此您可能希望在数据更新时签入服务器以验证实际时间。如果您没有网络连接,将会有一些难以处理的情况。有时您能做的最好的事情就是检测它们并告诉用户风险。
【讨论】:
以上是关于iOS 应用的基于时间的同步的主要内容,如果未能解决你的问题,请参考以下文章