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 同步问题的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 无法使用 EventKit 将日历事件添加到 Gmail 日历
UILocalNotification 或 EventKIt