如何通过跨设备同步唯一识别EKEvent

问题描述 投票:0回答:1

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

  • 假设我在设备 A 中安装了该应用程序。
  • 如果我登录到另一个设备让B,那么从A同步的事件也应该出现在设备B中,并且B的事件也应该同步。
  • 现在,如果我再次登录设备 A,则应该添加 B 的事件。但是之前来自 A 的事件不应再次添加到设备 A 为此,我决定将其
    eventIdentifier
    保留在远程数据库上。
  • 当我再次返回设备 B 时,就会出现问题,之前从设备 A 同步的事件已经存在,因此不应再次添加这些事件。但正如
    eventIdentifiers
    与设备 A 一样,无法识别事件是否已添加到设备 B 中。

有人可以建议我如何实现这种跨平台事件同步而不重复事件吗?

EKEvent 有属性

eventIdentifier
,但它只是
readOnly
属性,我无法将事件的远程 ID 保存在某处。

ios calendar synchronization eventkit ekevent
1个回答
4
投票

eventIdentifier
不在设备之间共享 - 同一事件很可能在不同设备上有不同的
eventIdentifier

相反,您需要使用

calendarItemExternalIdentifier
- 这(通常)在不同设备上是相同的。
一种(相对罕见的)例外是最近使用 EventKit 创建了一个事件,并且该事件尚未同步到服务器。这会导致
calendarItemExternalIdentifier
稍后发生变化

使用

calendarItemExternalIdentifier
,您可以通过查询数据库中是否已存在具有相同
calendarItemExternalIdentifier
的记录来检查事件是否已添加。上述异常需要单独处理。

© www.soinside.com 2019 - 2024. All rights reserved.