3 Replies Latest reply: Feb 11, 2011 3:54 PM by blairwillis
Felipe Raul Level 1 Level 1
Ok Guys, I just spent the last 4 hours going nuts with experimentations, trials and errors, and I finally think I figured it out, so bear with me here because it's not that simple. And excuse me for the poor english, I'm from Brazil.

Ok, in the iMac you're gonna set up a CalDAV account with your google login/password. It will work flawlessly and you won't have any problems, it will always update the google calendar and be updated by it. Just remember to use CMD+R to refresh it whenever you want, so you don't have to wait the 15 minutes or whatever you set in preferences.

Now let's talk iPad and iPhone. First of all, you have 2 options to sync calendars with Google, you can use protocol CalDAV or protocol Exchange.

Google's setup instructions for CalDAV (both iPhone and iPad) is here: http://www.google.com/support/mobile/bin/answer.py?answer=151674

The instructions for both iPhone and iPad for Exchange is here:
(just be sure to select calendar only, cause I'm assuming you're using IMAP or other protocol for mail and contacts).

The main difference between CalDAV and Exchange is that Exchange supports push updates, wich is instant, while with CalDAV you have to fetch manually (every time you open the calendar app) or another time setting (like 15 min, one hour, etc).

Well, my experiences revealed that the iPhone and the iPad will sync flawlessly with Google Calendar and the iMac, without any problems, BUT as long as you use Exchange AND Push to update the calendars (CalDAV doesn't support Push, and you need Push so the iPad sync works).

Let me repeat that: IF and ONLY IF you have BOTH Exchange protocol configured and PUSH enabled iPad and iPhone will sync flawlessly. But many people (me included) dont want to use push because a) it has a battery hit b) they don't need instant updates c) it consumes cellular data when you're not on Wifi, and if you don't have an unlimited plan that's not good.

So, if you TURN OFF PUSH with Exchange sync, the iPad will stop syncing properly. Curiously, the iPhone will continue syncing properly.

What I discovered is that, on the iPad, doesn't matter if you use CalDAV or Exchange, the moment you turn OFF push notifications it won't sync manually anymore. And by that I mean that with push off the iPad will not refresh calendar data when you open the calendar app (as it should since push is off and manual fetch is selected).

To sum it up, I discovred that with push OFF in both the iPad and the iPhone (either with Exchange or CalDAV):
- The iPhone will update both google calendar and the iMac;
- The iphone will be updated by both google calendar and the iMac and events created in the iPad;
- The iPad will NOT be updated when you open the calendar app, so it won't see any changes made either on the iPhone, iPad or Google Calendar, but when you create new events in the iPad you will see the data icon spinning so it will send that event to the other 3, but it will not recieve anything.

On macrumors forum people discovered that on the iPad, if you open your calendar, close it, change settings from manually fetch to 15 minutes or whatever, it will sync the next time you open your calendar. But it's unreliable (doesn't work every time), not to mention that you won't want to do that every time you need to sync your calendar !

What about the iPhone ? Well, in my experiences I found out that it doesn't matter if you use Exchange OR CalDAV, it will manually sync with push off every time you open the calendar app. Just a sidenote: the iPhone wasn't manually refreshing with push off as well, just like the iPad, but as soon as I rebooted it started to sync manually every single time and it has been so far. But the iPad didn't sync manually every time even after I rebooted it.

To end it all, how to know if the calendar is manually syncing with Push OFF ? Well, just open the calendar app and after 5 seconds you should see the data spinning logo right next to the 3G or Wifi icon in the status bar. It must happen EVERY time you open the calendar app (you don't even need to force quit the calendar app for it to happen, it must happen every time you hit home and then open the calendar again). If it's not spinning (recieving data) 5 seconds after you opened the calendar app, it's not manually syncing, so on the iPhone you should reboot and on the iPad there's no fix I found so far (besides the unreliable fix of chaning the fetch time like I said before).

Oh, I did all these tests with an iPhone 3GS running iOS4 (don't complain it's not 4.2.1, cause the iPhone IS working, the problem is with the iPad), and an iPad running 4.2.1.

I just hope this thread gets attention because It almost drove me nuts to figure out all these things.


Felipe Raul

ipad, iOS 4
  • Felipe Raul Level 1 Level 1
    Oh, just some final words that I forgot:
    - The obvious conclusion is that the iPad iOS 4.2.1 has a bug and needs to be fixed by Apple (when push is off)';

    - On the other hand, if you are OK by using Push in both the iPad and the iPhone you are golden, everything will work perfectly and instantly.

    - For all above to work you should TURN OFF calendar sync in iTunes, since you won't be syncing calendars trough iTunes anymore, you will use google calendar for that. Just sync with iTunes before you start so you have all your calendars synced up, then tell iTunes to stop syncing calendars, add the CalDAV OR Exchange in the iPad, iPhone and iMac and tell them to use the new CalDAV or Exchange as default calendars (it is in Settings > General > Mail, Calendars > Calendar - default calendar). By selecting that every new entries that you create on the iPhone or iPad will be created using the Google Calendar, so it will sync between devices. If you don't do that you will have to manually select for every new event you create the Google Calendar, otherwise it won't sync.
  • blairwillis Level 1 Level 1
    It looks like it's an iOS 4.2.1 bug regardless of device. On my iPhone 4, using CalDAV with Google Calendar, the app no longer fetches at start. It only fetches on the schedule OR if you change a calendar event, in which case it uploads the event changed and does a manual sync.

    Perhaps this is a "bug" or perhaps is is an intended change in procedure?

    Frankly, the only reason I'm using CalDAV is that it properly assigns the actual calendar color from Google calendar. If they fixed the color sync on Exchange/Push, I wouldn't need CalDAV/Fetch. I have a couple dozen calendars I need to use, and typically 20-50 events per day, and the limited random five colors applied using Exchange sync makes it useless.

    I bet it would only take an Apple developer a few hours (days at most) to get colors working properly with Exchange calendar sync.
  • blairwillis Level 1 Level 1
    An update: I am seeing the CalDAV account sync more frequently than the 15 minute interval I have Fetch set to, sometimes as soon as 5-6 minutes. This is however going in/out of the calendar app multiple times... Every once in a which it will update.

    I've found no pattern as to what triggers the sync. It doesn't seem to matter if I go into another app or not, or whether I close out the calendar app from the task menu. It's just totally random.

    You might say, "what's wrong with just letting it fetch every 15 minutes as it is schedule to do?" Well, most of the time this would be ok, but there are occasionally moments when a decision must be made and an up-to-the-minute current accurate calendar is required for this to happen.

    At this point, I'm going to have to keep my priority/vital calendars syncing via Exchange/push, and use CalDAV/push for the less vital calendars and at least have control over calendar colors with those.

    Also, just wanted to mention that all the above testing has been over a stable wifi connection, rather than 3G or Edge, in case it makes a difference. (I don't think it does.)