2012-03-08 61 views
0

我正在编写一个插入Google日历(或其他iCal驱动的服务)并显示事件提醒的小桌面应用程序。它经常会自动重新下载iCal文件。如果文件校验和已更改,则丢弃当前约会缓存并重新分析日历。检测iCal文件中的更改

事情是,这不适用于Google日历文件。经过进一步检查,我注意到每次我重新下载与某个日历关联的iCal文件时,所有事件上的DTSTAMP:property都发生了变化。所以标准校验和可能不是这里的方法。我正在考虑两种主要解决方案。

  • 根据原始文件计算校验和,并抛出DTSTAMP:行。 (脏)
  • 实现其检测日历的部分是新的,已被抛出,这已经改变了,等(昂贵的)我不一个完整的日历差异算法

不知道iCal格式是否还有我还没有发现的其他怪癖,所以我不知道方法1是否能解决我的问题。有限的测试似乎表明它确实如此。另一方面,方法2在CPU功耗方面似乎不必要地昂贵。

你会建议什么?

回答

1

不确定谷歌日历是否遵循rfc5545的100%,但应该有一个序列号“定义日历组件在修订序列中的修订序列号”。

+0

如果我要实现差异算法[(上下文)](http://www.kanzaki.com/docs/ical/sequence.html),这将会很有用。我可以验证Google的ICS文件是否具有此字段,但我不知道他们是否一贯地应用它。 – Pieter 2012-03-08 18:42:59