更新发生时刷新.ICS文件

时间:2009-12-11 20:16:10

标签: outlook icalendar vcalendar

我有一个数据库,可以输出一个如下所示的.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上?

2 个答案:

答案 0 :(得分:3)

你必须重新发行ical,但你需要做2个瘦身:

  1. 保持相同的UID。

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

  3. 以下是更新的内容:

    BEGIN:VEVENT
    UID:34@homewoodphoto.jhu.edu
    DTSTAMP:20091211T175956Z
    DTSTART:20091106T200000Z
    DTEND:20091106T230000Z
    SUMMARY:
    SEQUENCE:1
    END:VEVENT
    

答案 1 :(得分:0)

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

换句话说,日历更新没有“推送”技术,客户端程序无论什么时候都会拉动。因此,如果您要构建一个包含更新事件的数据库,您希望立即将其推送到人们的日历,那么......您不能。 :(

相关问题