1

我们的软件有一个可用的 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

4

2 回答 2

0

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

另一方面,客户端有一个 Brief 标头设置为 t (请参阅https://datatracker.ietf.org/doc/html/draft-murchison-webdav-prefer)所以这应该无关紧要......

希望到那时您会找到解决方案,但如果您有兴趣,Apple 人员会在 Calconnect Interop 活动中得到很好的代表:http: //www.calconnect.org/calconnect28.shtml

于 2013-06-14T03:49:04.117 回答
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>
于 2014-01-17T14:50:49.437 回答