我使用CalDav访问Apple iCloud Calendars。目前我的帐户中有4个日历:Home,Work,Test cal 1,Test cal 2.前两个似乎是默认创建的,另外两个是测试版。
但是,当我列出我校长的日历时,我会收到8个不同的日历:
/calendars/64E6F061-DE12-4D6F-B7D4-5DFDE53C800C/
是我的Test Cal 1
/calendars/A1FBED21-5ED1-4BEF-8C4F-88A0D425BB7A/
是我的Test Cal 2
/calendars/home/
家庭日历,相信这是主日历
/2003926771/calendars/work/
工作日历
但我不确定这些其他日历的目的:
/calendars/inbox/
/calendars/notification/
/calendars/tasks/
/calendars/outbox/
可以尝试从他们的名字中猜出,但这会导致更多问题。例如,tasks
可能意味着在此日历中管理VTODO,但这是否意味着VTODO未在任何其他日历中列出?
无论如何,主要问题是谁知道每个(默认?)iCloud日历的目的?
答案 0 :(得分:3)
首先:CalDAV服务器可以包含任意CalDAV集合,而不仅仅是日历。例如。服务器还包含CardDAV集合(也称为地址簿)或甚至用于文件存储的集合并不罕见。您可以通过查看其{DAV:}resourcetype
属性来确定WebDAV集合的类型。对于CalDAV日历(包含实际iCalendar对象的集合),它将是{urn:ietf:params:xml:ns:caldav}calendar
。
作为一个例子,任务可能意味着VTODO在此日历中进行管理
正确。该集合将具有上面提到的{urn:ietf:params:xml:ns:caldav}calendar
资源类型。
然后,集合可以包含哪些类型的iCalendar实体由{urn:item:params:xml:ns:caldav}supported-calendar-component-set
属性确定,例如:
<supported-calendar-component-set xmlns="urn:ietf:params:xml:ns:caldav">
<comp name="VTODO"/>
</supported-calendar-component-set>
...在任务集合的情况下。
在服务器上创建新集合时,使用相同的属性指定日历类型。
但这意味着VTODO未在任何其他日历中列出
CalDAV技术上支持两种风格,&#39; hybrid&#39;可以包含待办事项和事件的日历,以及单一类型的日历。 &#39;混合&#39;日历将在comp
中包含多个supported-calendar-component-set
元素。 iCloud服务器可以执行这两种样式。
首选哪种风格主要是品味问题。在Apple世界中,单一类型的日历是默认的,部分原因是提醒和日历是iOS和macOS上的不同应用程序。 (最初的MacOSX iCal应用程序是混合的)。此外,Outlook仅支持单一类型的日历。
长话短说:我建议保持它们不同以避免发生奇怪的事情: - )
outbox是支持日程安排的遗产。客户端会将会议请求等放入此集合中,然后服务器会代表客户端将它们扇出来。
iCloud现在充当auto-scheduling CalDAV服务器。简而言之,这意味着如果您将包含ATTENDEE等的VEVENT放入iCloud日历中,它将自动与那些ATTENDEE进行iTIP交互。
摘要:只是跳过/忽略这个。
这是[{1}}的同行,但与outbox
不同,inbox
仍在使用中。当人们邀请您参加会议/活动时,outbox
将包含客户发送的会议请求。
使用auto-scheduling CalDAV服务器,这主要用作通知用户被邀请的方式,也就是说,它会在“收件箱”中弹出。 iOS日历的选项卡,或macOS日历中的通知弹出窗口。 请注意,对于自动计划服务器,服务器还会在用户日历中更新或创建匹配的记录。也就是说,对于收件箱中的每个项目,您将在常规日历中找到具有相同UID的另一个项目(除非它当然是取消)。
在具有收件箱支持的非自动安排服务器中,客户端在技术上应该将iTIP项目从收件箱中取出并将其放入日历中。但我不认为任何客户端仍支持此操作,我不知道有收件箱但没有自动安排的服务器。
摘要:此集合包含有关收件箱邀请的通知(作为iTIP对象)。
这类似于收件箱,它是一个包含非iTIP通知的集合。它的主要用途是CalDAV shared calendars。如果您被邀请参加日历,此集合将包含邀请。