代码之家  ›  专栏  ›  技术社区  ›  rhodesjason

更新时刷新.ics文件

  •  2
  • rhodesjason  · 技术社区  · 16 年前

    我有一个数据库,它输出一个.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文件内部强制或强制更新到客户机?或者从内部看,即使它不在Exchange上?

    2 回复  |  直到 10 年前
        1
  •  3
  •   Tim Cooper    14 年前

    你必须重新发行iCal,但你需要做两件事:

    1. 保持相同的UID。

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

    更新如下:

    BEGIN:VEVENT
    UID:34@homewoodphoto.jhu.edu
    DTSTAMP:20091211T175956Z
    DTSTART:20091106T200000Z
    DTEND:20091106T230000Z
    SUMMARY:
    SEQUENCE:1
    END:VEVENT
    
        2
  •  0
  •   rhodesjason    16 年前

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

    换句话说,没有“推送”技术来更新日历,客户机程序会在任何需要的时候进行拉拽。因此,如果您正在构建一个数据库,其中包含要立即推送到人们日历的更新事件,那么……你不能。