EventKit 同步问题

Posted

技术标签:

【中文标题】EventKit 同步问题【英文标题】:EventKit synchronization questions 【发布时间】:2012-06-27 14:57:32 【问题描述】:

在我的应用程序中,我使用EventKit API 来访问我设备上的日历,并在我的视图中显示它们。但是,在使用网络日历时,我怀疑EKEventStore 在查询时只会返回某种缓存/本地事件列表,而不是重新加载日历并返回实际/最新内容。 当启动本机日历应用程序时,该应用程序将刷新/重新加载所有日历,同步任何网络共享日历。现在回到我的应用程序也将显示新同步的事件。

除此之外,我发现通过我的应用和EventKit / EventKitUI 修改任何事件(删除/更新)都不会同步回 e。 G。我 Mac 的日历。

长话短说:有没有办法强制与EventKit/ios SDK 中的网络共享日历同步?

【问题讨论】:

你解决了吗?我也在经历这个。它似乎最终会同步,但可能需要几天时间。正如你所说,原生 iOS 日历应用会强制同步,所以它似乎做了一些特别的事情。 很遗憾,到目前为止我还没有提出任何解决方案。 【参考方案1】:

    您可以使用EKEventStore 实例的- (void)refreshSourcesIfNecessary 方法来:

    ...如果本地数据过期,则从远程源提取新数据。

    这将通过获取最新的远程数据来强制更新本地日历存储。我感觉这是原生 iOS 日历应用程序用来提示更新的方法。

    关于已删除和更新的日历事件未同步到您的 Mac 的问题,您确定在您进行修改后在您的 EKEventStore 实例上调用 - (void)commit: 吗?

    另外,EKEventStore 中有一系列方法用于保存和删除日历和事件,这些方法还提供了可以立即提交更改的提交参数。我会发布链接,但作为新用户,我只能使用两个超链接。

    - (void)saveEvent:span:commit:error:- (void)removeEvent:span:commit:error:

    假设这些事件被添加到基于云的日历中,这应该具有将您的更改同步到您的 Mac 的效果。

【讨论】:

以上是关于EventKit 同步问题的主要内容,如果未能解决你的问题,请参考以下文章

EventKit 日历的最后一个事件

iOS - 无法使用 EventKit 将日历事件添加到 Gmail 日历

自定义时区的 EventKit 问题

UILocalNotification 或 EventKIt

UILocalNotification 或 EventKIt

使用 EventKit 添加事件和日历