For some time now I've been syncing my iOS calendars with Google Calendar using the CalDAV protocol. And of course my email of choice has been Gmail for the better part of a decade, and this has synced seamlessly using the magic of IMAP. Up until recently, though, there was no good way for me to sync my Google contacts.
Instead of using a server-side protocol like CardDAV (similar to CalDAV for calendar syncing) to sync my Google Contacts with my devices, I was using Apple's Contacts app to sync to Google Contacts on my Mac, then syncing this to my iOS devices. This was indescribably clunky and prone to all sorts of collisions and failures, and it required syncing contacts to my iOS devices using iTunes. I've been looking for a better way for some time. And yesterday I found it.
Google now supports CardDAV. This means that, in the same way I sync my calendars, and similar to how I sync my mail, I can now seamlessly sync my iOS Contacts with my Google Contacts.
Setting this up is very easy. The only oddity is that it's not yet part of the standard Google account setup. It must be set up as a separate account. I'll also mention that if you were syncing your contacts via iTunes, once this is set up and working well, you can turn off iTunes syncing of contacts.
Here are Google's instructions on the matter. They are about as clear as can be, so I'll just leave it at that.
I've only been using this for a day, so I can't speak to it's long term reliability. But in testing, CardDAV for Google contacts worked brilliantly for me. I was able to add a contact to my Google Contacts via a web browser and have it show up on my iPhone almost immediately. I could then edit or add a contact on my iPhone and watch the changes occur in Google in my Mac's browser nearly instantly.
For me, this is a pretty big deal. I'm now able to have all my mail, calendar and contacts centrally located on Google's servers and sync those things to all my devices. It's pretty special.
UPDATE: This has worked seamlessly for me from day one. But lots of folks have been having problems. The main complaint seems to be that contacts only partially import to iOS. One reader seems to have found a possible — if somewhat annoying — solution. Jump to Lyallp's comments for the full explanation. The nutshell version is that iOS gets stuck on certain contacts that it deems malformed in some way. The solution is to export your contacts in small chunks and import these chunks into iOS to find the culprit. It's kind of like Battleship for Contacts. Fun times!
Lyallp also notes that control characters (^) were present in parts of his VCF file. So you might search for these and possibly other problem characters as well.
Anyway, thanks, Lyallp, for the info. Much appreciated.