2

我有一个数据库,它输出一个 .ics 文件,如下所示:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:36@homewoodphoto.jhu.edu
DTSTAMP:20091211T175956Z
DTSTART:20091106T200000Z
DTEND:20091106T230000Z
SUMMARY:
END:VEVENT
BEGIN:VEVENT
UID:35@homewoodphoto.jhu.edu
DTSTAMP:20091211T175956Z
DTSTART:20091105T220000Z
DTEND:20091106T010000Z
SUMMARY:
END:VEVENT
BEGIN:VEVENT
UID:34@homewoodphoto.jhu.edu
DTSTAMP:20091211T175956Z
DTSTART:20091106T200000Z
DTEND:20091106T230000Z
SUMMARY:
END:VEVENT
END:VCALENDAR

我可以通过大多数电子邮件客户端轻松订阅它,甚至是 Microsoft Outlook 2007。但是,在客户端订阅文件后,几乎不可能在更新发生时让它刷新文件。

有没有办法从 .ics 文件中强制或推送更新到客户端?或者从 Outlook 内部,即使它不在 Exchange 上?

4

2 回答 2

3

您必须重新签发 ical,但您需要做 2 件事:

  1. 保持相同的 UID。

  2. 您需要添加一个 SEQUENCE 标头(这是一个简单的整数)。然后为每个新更新增加序列号。

这是更新的样子:

BEGIN:VEVENT
UID:34@homewoodphoto.jhu.edu
DTSTAMP:20091211T175956Z
DTSTART:20091106T200000Z
DTEND:20091106T230000Z
SUMMARY:
SEQUENCE:1
END:VEVENT
于 2009-12-13T14:26:11.403 回答
0

对于这个问题,我们找到的唯一答案是:你做不到。截至目前,无法控制日历客户端根据您的 .ics 文件刷新和更新的频率。

换句话说,没有用于日历更新的“推送”技术,客户端程序会随时拉取。因此,如果您正在构建一个包含要立即推送到人们日历中的更新事件的数据库,那么……您不能。:(

于 2010-02-01T14:42:08.827 回答