IntroductionThe iOS CardDAV client is an easy to use, and proper CardDAV client. It works quite well and should just work out of the box with SabreDAV. Protocol details
.wellknownThe carddav client will check for /.well-known/carddav to discover information about the CardDAV server. This is not currently supported by SabreDAV, but it may in the future. current-user-principalThe client will properly discover the principal location by checking for the {DAV:}current-user-principal property. Principal propertiesThe client will ask for the following additional properties on principals:
The last one related to the directory-gateway IETF draft. Addressbook propertiesThe client will perform the following PROPFIND request on all addressbooks: <?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<A:current-user-privilege-set/>
<D:bulk-requests xmlns:D="http://me.com/_namespace/"/>
<C:push-transports xmlns:C="http://calendarserver.org/ns/"/>
<A:resourcetype/>
<A:quota-available-bytes/>
<A:owner/>
<A:add-member/>
<A:displayname/>
<A:supported-report-set/>
<A:resource-id/>
<C:pushkey xmlns:C="http://calendarserver.org/ns/"/>
<A:quota-used-bytes/>
</A:prop>
</A:propfind>And the following on a single addressbook: <?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<C:getctag xmlns:C="http://calendarserver.org/ns/"/>
<A:sync-token/>
</A:prop>
</A:propfind>It will use the addressbook-multiget REPORT to fetch contents of cards. Directory supportiOS has support for a global read-only directory. iOS does not allow simply browsing through the directory, it's used for searching only (using the addressbook-query REPORT). SabreDAV does have (very minimal) support for CardDAVDirectory, by providing a simple interface Sabre_CardDAV_IDirectory. Encoding of HTTP/1.1 200 OkApparently older iOS versions (1.4.2) require HTTP/1.1 200 Ok to be encoded in uppercase (OK rather than Ok). This is fixed in version 1.5.3. | |