icalendar - 通过 METHOD:PUBLISH 结合 SEQUENCE 发布频繁更改的 iCalendar
问题描述
我正在使用ical-generator库发布 iCalendar 提要。日历包含一个全天事件,它是对某一天发生的事情的预测。随着预测的更新,我想相应地更改事件的日期。
这是 2021 年 2 月 21 日示例事件的提要的样子:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//sebbo.net//ical-generator//EN
METHOD:PUBLISH
TIMEZONE-ID:Europe/Berlin
X-WR-TIMEZONE:Europe/Berlin
BEGIN:VEVENT
UID:42
SEQUENCE:26852582
DTSTAMP:20210120T150245Z
DTSTART;VALUE=DATE:20210121
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
SUMMARY:Test
ORGANIZER;CN="XXX":mailto:xxx@xxx.com
X-PUBLISHED-TTL:PT1M
LAST-MODIFIED:20210120T150245Z
END:VEVENT
END:VCALENDAR
当我想更新事件时,我使用相同UID
但更新DTSTART
和SEQUENCE
(我使用“自纪元以来的分钟数”以确保我的序列号正确反映了更新顺序)。
现在假设预测发生了变化,事件必须移到第二天:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//sebbo.net//ical-generator//EN
METHOD:PUBLISH
TIMEZONE-ID:Europe/Berlin
X-WR-TIMEZONE:Europe/Berlin
BEGIN:VEVENT
UID:42
SEQUENCE:26852583
DTSTAMP:20210120T150309Z
DTSTART;VALUE=DATE:20210122
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
SUMMARY:Test
ORGANIZER;CN="XXX":mailto:xxx@xxx.com
X-PUBLISHED-TTL:PT1M
LAST-MODIFIED:20210120T150309Z
END:VEVENT
END:VCALENDAR
笔记:
UID
是一样的DTSTART
现在是 2021 年 2 月 22 日SEQUENCE
增加 1(分钟)
所有主要客户端(Outlook Web Access、Google 日历、Apple 日历)都能正确显示提要,但它们不反映事件的任何更新。
我错过了什么?
解决方案
事实证明,一切都按预期工作,但是——正如@anmari 在评论中指出的那样——接收应用程序按照自己的节奏进行检查。
推荐阅读
- c++ - 在构造函数中初始化成员变量二维向量
- apache-spark - 即使 parquet 文件有数据,外部非分区 Hive 表也显示 0 条记录,当使用 spark.read.parquet 读取时,它显示正确的数据
- python - python中的SqlAlchemy和Celery结构问题
- javascript - d3js V6,如何使用多个左轴?
- bash - bash 中的 stat 在 Mac 和 Windows 中返回不同
- javascript - ES6 没有在 JSBin 中启用,尽管选择了“ES6 / Babel”选项
- javascript - Laravel OctoberCms Ajax 过滤器
- chapel - Multilocale Chapel:检查失败(GASNet:无效的节点数:-nl)
- javascript - 有没有办法在没有 HTML 的情况下在控制台中请求用户输入(在 ES6 中)?
- graphql - 运行 GraphQL 查询返回 ID `1` 的格式无效