用于将 webcal 导入到 google/outlook 日历的一键 url

问题描述

我有一个用作 webcal 服务器的 PHP 应用程序,我希望用户可以选择使用他们的日历应用程序,或者只需单击 url 将 webcal://example.ics 直接导入到 google 或 Outlook 或 office 365 日历,无需用户通过设置导入。试图找到这些文件,但找不到。

解决方法

YZY,您无法控制用户日历应用程序仅导入。这取决于接收端 - 用户应用程序,说明在接收时如何处理 ics 文件或 url。例如,在我的桌面浏览器中,我将 .ics url/文件的默认应用程序设置为记事本++,而不是我的日历应用程序。您无法覆盖它。

其他应用程序(例如智能手机或桌面上的电子邮件应用程序)如何处理它取决于用户控制的设置。 EG:在 Outlook 中,用户可能没有勾选“自动处理会议请求”

ics url/file 的提供者唯一的控制是确保根据最新规范正确指定文件/url(注意 RFC5546 更新了 RFC5545,需要阅读两者)。简而言之:

  1. https 协议是标准的(webcal 是非官方的苹果。参见https://icalendar.org/iCalendar-RFC-5545/1-introduction.htmlhttps://en.wikipedia.org/wiki/ICalendar.
  2. 根据 RFC5546 和 RFC5545 中给出的示例,后缀为“.ics”
  3. mime 内容类型为文本/日历 https://www.iana.org/assignments/media-types/text/calendarhttps://datatracker.ietf.org/doc/html/rfc5545#section-8.1
  4. 必须使用适当的方法:PUBLISH 适用于可订阅的 URL(在 URL 中显示为单独的日历)或 REQUEST(用于电子邮件等中的会议请求)参见 https://datatracker.ietf.org/doc/html/rfc5545#section-3.7.2 和 {{3} }

我喜欢区分“导入”和“订阅”:

  • 在我看来,导入是将 .ics 文件中的一个事件(或多个事件)导入到现有的选定日历中 - 例如(但不仅限于):使用 METHOD:REQUEST 时。
  • 订阅用于更新的 icalendar 提要,因此通过 url 订阅日历或将日历添加到日历应用程序是实用的。这种 url 需要公开访问(虽然它可以被不寻常的 url 遮挡)

人们可以下载一个可订阅的 .ics 并“导入”它,但那时人们只会拥有那个冻结的事件,它永远不会更新。

总而言之,您能做的最好的事情是提供正确的 url 并提供一些链接,以了解如何订阅的信息,以防用户不熟悉订阅