My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
iOSCardDAV  
iOS CardDAV client
CardDAV, Clients
Updated Oct 9, 2011 by evert...@gmail.com

Introduction

The 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

  • Spotted User Agent: DataAccess/1.0 (8J2)

.wellknown

The 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-principal

The client will properly discover the principal location by checking for the {DAV:}current-user-principal property.

Principal properties

The client will ask for the following additional properties on principals:

  • {http://calendarserver.org/NS}email-address-set
  • {DAV:}principal-collection-set
  • {DAV:}supported-report-set
  • {DAV:}resource-id (no idea what this one is)
  • {urn:ietf:params:xml:ns:carddav}addressbook-home-set
  • {urn:ietf:params:xml:ns:carddav}directory-gateway

The last one related to the directory-gateway IETF draft.

Addressbook properties

The 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 support

iOS 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 Ok

Apparently 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.


Sign in to add a comment
Powered by Google Project Hosting