如何在Reminders.app中显示caldav日历

时间:2013-06-07 09:50:53

标签: macos caldav

我们的软件实现了caldav实现,使我们的用户能够访问iOS或Mac OS X中的联系人和日程安排。

我目前头痛的是,待办事项日历没有显示在Reminders.app中。 (当它仍处于iCal侧边栏时确实显示。)澄清:任务本身是可见的,但日历不在侧栏中。

我在这里粘贴了房产回复。任何人都能指出我错过的东西吗?

  <D:response>
    <D:href>/dav/fg/todos1/</D:href>
    <D:propstat>
      <D:prop>
        <I:calendar-color/>
        <I:calendar-order>700</I:calendar-order>
        <B:calendar-timezone>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//intevo.websolutions//TEAMBOX//DE
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:Europe/Vienna
BEGIN:STANDARD
DTSTART:20111030T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZNAME:CET
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:20110327T030000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZNAME:CEST
END:DAYLIGHT
END:VTIMEZONE
END:VCALENDAR
</B:calendar-timezone>
        <D:current-user-privilege-set>
          <D:privilege>
            <D:read/>
          </D:privilege>
          <D:privilege>
            <D:read-acl/>
          </D:privilege>
          <D:privilege>
            <D:read-current-user-privilege-set/>
          </D:privilege>
        </D:current-user-privilege-set>
        <D:displayname>Aufgaben</D:displayname>
        <CS:getctag>"5109d85d95fece7816d9704e6e5b1279"</CS:getctag>
        <D:owner>
          <D:href>/dav/fg/</D:href>
        </D:owner>
        <D:resourcetype>
          <B:calendar/>
          <D:collection/>
        </D:resourcetype>
        <B:supported-calendar-component-set>
          <B:comp name="VTODO"/>
        </B:supported-calendar-component-set>
        <D:supported-report-set>
          <D:supported-report>
            <D:report>
              <B:calendar-query/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <B:calendar-multiget/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <D:principal-property-search/>
            </D:report>
          </D:supported-report>
          <D:supported-report>
            <D:report>
              <D:principal-search-property-set/>
            </D:report>
          </D:supported-report>
        </D:supported-report-set>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>

完全交换在http://pastebin.com/aKN4Yw8Q

2 个答案:

答案 0 :(得分:0)

我注意到的唯一奇怪的事情是,对于todos响应,你没有为缺少的属性(具有404状态)的propstat,而你有所有其他日历。

另一方面,客户端的Brief标头设置为t(参见http://tools.ietf.org/html/draft-murchison-webdav-prefer),所以这不重要......

希望您可以找到解决方案,但如果您感兴趣,Apple人员可以参加Calconnect Interop活动:http://www.calconnect.org/calconnect28.shtml

答案 1 :(得分:0)

OS X 10.8和10.9之间的客户端行为发生了变化。 OS X 10.9中的版本对特权的解释更为严格,尽管它可能不是最严格意义上的标准。

我在我们的服务器上跟踪了类似的问题,似乎罪魁祸首是<current-user-privilege-set>标记中返回的权限。我不知道哪个特权特别导致Reminders.app显示该文件夹,但返回以下内容似乎可以完成这项工作:

<write-acl/>
<write-content/>
<write-properties/>
<read-current-user-privilege-set/>
<read/>
<write/>
<write-content/>
<write-properties/>
<bind/>
<unbind/>
<read-free-busy xmlns="urn:ietf:params:xml:ns:caldav"/>

您可能希望尝试添加各个权限,直到显示该文件夹(或将所有权限全部添加,然后逐个删除)。请注意,Reminders.app在刷新时很懒,因此您可能需要删除并添加帐户才能使更改生效。

作为参考,以下是我们任务文件夹的完整回复:

  <response>
   <href>/webdav/test@emclient.com/T%C3%A2ches/</href>
   <propstat>
    <prop>
     <displayname>Tâches</displayname>
     <resourcetype>
      <collection/>
      <calendar xmlns="urn:ietf:params:xml:ns:caldav"/>
     </resourcetype>
     <supported-report-set>
      <supported-report>
       <report>
        <acl-principal-prop-set/>
       </report>
      </supported-report>
      <supported-report>
       <report>
        <principal-match/>
       </report>
      </supported-report>
      <supported-report>
       <report>
        <principal-property-search/>
       </report>
      </supported-report>
      <supported-report>
       <report>
        <principal-search-property-set/>
       </report>
      </supported-report>
      <supported-report>
       <report>
        <expand-property/>
       </report>
      </supported-report>
      <supported-report>
       <report>
        <calendar-query xmlns="urn:ietf:params:xml:ns:caldav"/>
       </report>
      </supported-report>
      <supported-report>
       <report>
        <calendar-multiget xmlns="urn:ietf:params:xml:ns:caldav"/>
       </report>
      </supported-report>
      <supported-report>
       <report>
        <free-busy-query xmlns="urn:ietf:params:xml:ns:caldav"/>
       </report>
      </supported-report>
      <supported-report>
       <report>
        <sync-collection/>
       </report>
      </supported-report>
     </supported-report-set>
     <owner>
      <href>/webdav/users/test@emclient.com/</href>
     </owner>
     <current-user-privilege-set>
      <privilege>
       <bind-item xmlns="http://icewarp.com/ns/"/>
      </privilege>
      <privilege>
       <write-acl/>
      </privilege>
      <privilege>
       <unbind-item xmlns="http://icewarp.com/ns/"/>
      </privilege>
      <privilege>
       <write-content/>
      </privilege>
      <privilege>
       <lookup xmlns="http://icewarp.com/ns/"/>
      </privilege>
      <privilege>
       <read-content xmlns="http://icewarp.com/ns/"/>
      </privilege>
      <privilege>
       <bind-collection xmlns="http://icewarp.com/ns/"/>
      </privilege>
      <privilege>
       <unbind-collection xmlns="http://icewarp.com/ns/"/>
      </privilege>
      <privilege>
       <write-properties/>
      </privilege>
      <privilege>
       <read-current-user-privilege-set/>
      </privilege>
      <privilege>
       <read/>
      </privilege>
      <privilege>
       <write/>
      </privilege>
      <privilege>
       <write-content/>
      </privilege>
      <privilege>
       <write-properties/>
      </privilege>
      <privilege>
       <bind/>
      </privilege>
      <privilege>
       <unbind/>
      </privilege>
      <privilege>
       <read-free-busy xmlns="urn:ietf:params:xml:ns:caldav"/>
      </privilege>
     </current-user-privilege-set>
     <supported-calendar-component-set xmlns="urn:ietf:params:xml:ns:caldav">
      <comp name="VTODO"/>
     </supported-calendar-component-set>
     <calendar-order xmlns="http://apple.com/ns/ical/">2</calendar-order>
     <getctag xmlns="http://calendarserver.org/ns/">&quot;1389952517:35&quot;</getctag>
     <sync-token>&quot;1389952517:35&quot;</sync-token>
    </prop>
    <status>HTTP/1.1 200 OK</status>
   </propstat>
  </response>