Two-way iPhone and Google Calendar synchronization
One thing I really missed about my iPhone was the ability to synchronize its internal calendar with my Google Calendar. I know it can be done via iTunes + MS Outlook + some iCal Outlook plugin, but I don’t use Outlook and would prefer more direct way. So I decided to write a simple utility called ics that’s able to do the 2-way sync of events.

Features:
- Synchronizes events from all of your calendars - both ways
- Works with 1.1.3 firmware (not yet tested with other versions)
Requirements:
- .NET Framework 2.0 installed
- iTunes installed (tested with 7.6.1)
Installation:
- Download the package (400 kB) and unpack it somewhere
- Copy iTunesMobileDevice.dll (usually resides at c:\Program Files\Common Files\Apple\Mobile Device Support\bin\) to the directory with ics executable
- Be sure to have your Google Calendar’s time zone set to the same zone as your iPhone - note that there are two places where Google Calendar’s time zone can be set - first is under Settings/Your current time zone. But the one important for us is really under Settings/Calendars/[Calendar]/Calendar Time Zone. If you have multiple calendars be sure to check time zone of each.
How to synchronize:
- Connect your iPhone using USB cable
- Be sure not to have Calendar application running on iPhone
- Run the executable (ics.exe)
- Enter your email and password which you use to log in to Google Calendar
- Click Synchronize button
- Review changes and confirm/reject them
- That’s it
Known limitations:
- Limited support for recurring events - recurring events coming from Google Calendar are shown in iPhone but not vice versa (only first occurence will be shown). Also editing/deleting recurring event coming from Google Calendar in iPhone won’t work and the change gets lost at the time of next synchronization.
- No notifications at the time (although if you manually add notification to an event in iPhone it will remain functional after synchronization)
- Events created in iPhone go always to default (usually the first) user’s Google Calendar
- In case of conflict (e.g. event edited both in iPhone and Google Calendar and then synchronized), Google Calendar is the source of truth
- Synchronizes events in range: [Now - 3 months; Now + 1 year], maximum of 10000 events
- This utility is distributed without any guarantee, i.e. don’t blame me if it destroys your iPhone or deletes all your calendar events and so on
I would like to thank to:
- manzana (.NET API for interacting with the Apple iPhone)
- managed-sqlite (A Managed SQLite implementation)
- Google APIs and Tools
Tags: .NET, Calendar, Google Calendar, Synchronization, iPhone