如何通过设备间同步识别EKEvent

时间:2015-11-26 05:32:25

标签: ios calendar synchronization eventkit ekevent

我正在尝试为项目制作事件同步功能。我需要与远程服务器同步事件。

  • 我们说我在设备A中安装了应用程序。
  • 如果我登录其他设备,我们可以选择B,那么从A同步的事件也应该出现在设备B中,B的事件也应该同步。
  • 现在,如果我再次登录设备A,则应添加B的事件。但以前来自A的事件不应再次添加到设备A 为此我决定保留其{{ 1}}在远程数据库上。
  • 当我再次返回到设备B时,问题就出现了,设备B已经存在先前从设备A同步的事件,因此不应再次添加这些事件。但由于eventIdentifier与设备A相同,无法识别事件是否已在设备B中添加。

有人可以建议我实现这种跨平台事件同步的方法,而不会重复事件吗?

EKEvent拥有属性eventIdentifiers,但它只有eventIdentifier属性,我无法在某个地方保留事件的远程ID。

1 个答案:

答案 0 :(得分:2)

设备之间不共享

eventIdentifier - 同一事件很可能在不同设备上具有不同的eventIdentifier

相反,您需要使用calendarItemExternalIdentifier - 这将(通常)在不同设备上相同 一个(相对罕见的)异常是最近使用EventKit创建了一个事件,并且该事件尚未同步到服务器。这会导致calndarItemExternalIdentifier to change at a later time

使用calendarItemExternalIdentifier,您可以通过查询来查看是否已添加事件,以查看数据库中是否已存在具有相同calendarItemExternalIdentifier的记录。上述例外情况需要单独处理。