For months, I've been griping about the iPhone's complete lack of features for syncing the iPhone wirelessly (either via Wifi or 3G) with Apple's own iCal server, part of 10.5 "Leopard" Server.
While I've covered many of the possible hacks to make this work in my blog post from January of this year - none of them were, ahem, optimal (i.e. reliable).
With the release of iPhone 3.0, Apple slid in a very essential bit of functionality for iCal server users: CalDAV support. CalDAV is important, because it's the open standard upon which iCal server's calendar data travels - so if the iPhone "speaks" CalDAV, then it can speak to iCal Server. (As a side note, a lot of people have noticed that the iPhone will also speak with Google Calendar this way as well)
And speak it does. In our preliminary testing, the integration with iCal server works well. It loads complex calendars in a matter of minutes and allows you to post new appointments to your iCal server-based calendar. New appointments take a little while to reach a desktop iCal or the iPhone - depending on refresh times on your iCal desktop application, we saw update times of 1-15 minutes, but it all works.
There are so far only a couple downsides: you can't invite people on your iPhone, nor can you accept invitations from your phone. Invitations show up on the iPhone, but you can't accept or refuse them. You have to wait until you get to your iCal on your desktop to do so. Not a big deal, really.
There's also no way to set up delegates as read only or read/write calendars, other than setting them up as separate accounts with full access. But given that most people need access to their own calendars when on the run only, this isn't a huge limitation.
The biggest issue for some will be the fact that CalDAV, unlike MobileMe or Exchange-based solutions, is not a true push technology with iPhone 3.0. In order to get the updates, you'll need to open the Calendar application on your iPhone and wait for it to download. The changes come down quickly (usually with 30 seconds or so), but still it requires interaction. Of course, that's a lot less interaction than having to plug in your iPhone via USB, which is the only way it worked in the past.
So... want to know how to set it up? If you're already using iCal on your desktop with your iCal Server, it's really quite simple.
First, you'll need a couple pieces of information from your iCal on your desktop. Click on "Preferences..." in the iCal menu, select your iCal server based account and look for the "Server Settings" tab. Click on it and look at the URL there.
All you need are three things from this URL:
A) Does it start with "http://" or "https://"?
B) What is the server name? (in this case, ical.techsuperpowers.com)
C) What is the port number? (in this case, 8444)
For this to work, you'll need to make sure that your server is addressable from external networks. In my case, I'd need to make sure that my server and firewall are set up to allow iCal traffic to pass to the outside world through port 8444. If you're not sure about this piece, contact your network administrator - and if you don't have one, contact us!
Now, go to your iPhone.
1) Tap on the "Settings"
2) Tap on "Mail, Contacts, Calendars"
3) Tap "Add Account..."
4) Tap on "Add CalDAV Account" under "Calendars"
5) Enter your Server Name - (B) above - and your username and password for iCal server. Note for most installations, this is your "shortname" on the iCal server.
6) Enter the Description - that will be how you iCal server will show on the Calendar, so choose that based on what makes sense for you.
7) Hit "New" - Accept any messages about certificates, and ignore any messages that say that your request failed.
8) Tap on the "Advanced Settings..." and you'll get a screen like below.
9) If your answer to (A) above was "https://" then turn "Use SSL" ON. Otherwise, leave it off.
10) Enter the port number (C) under "Port"
11) Under account URL, scroll to the left and replace "user" with your shortname. The full URL should say "http://[servername]:[port]/principals/users/[your username]" Your URL may say "https" if your server uses SSL.
12) Tap the arrow back and try to add the iCal server again. This time it should verify.
13) Go back to Home and view your Calendar on your iPhone. You should now be able to select the iCal server calendar from your list of Calendars. EPIC WIN!
Now, enjoy your iCal server calendars - finally synced with your iPhone wirelessly. My griping is done. Apple, I love you once again.