The Calendar app in iPhone OS 2.x could be synced with iCal using two methods. First, using iTunes, both personal and read-only subscribed calendars could be synced between your Mac to the iPhone. With this method, you were able to select which calendars you wanted to sync and which ones you didn’t. Second, you could sync with MobileMe. This method gave you instant push updating between iCal calendars and Calendar on the iPhone. Unfortunately, read-only calendars could not be pushed to the iPhone, and you lost the ability to choose a subset of calendars to sync.
Apple made many welcome improvements to the Calendar app in iPhone OS 3.0. While read-only calendars still could not be synced from iCal (this capability was added with OS 3.1), OS 3.0 gave the iPhone’s Calendar app the ability to subscribe to WebDav and CalDav calendars directly. In addition, Microsoft Exchange users could sync their calendars and receive and respond to meeting invitations via ActiveSync. Numerous other minor annoyances were fixed such as the colors assigned to your Calendars in iCal now corresponded to the colors in Calendar on the iPhone.
These calendaring improvements in iPhone OS 3.x coincided with my marriage and the addition of two stepchildren to my family. My previously simple “bachelor” calendaring needs suddenly became much more complex. For example, my wife and I needed to share our personal calendars and keep track of the kids’ schedules. And as anyone with children knows, we needed to access this information on the go. Apple’s calendar solution that integrated iCal, MobileMe, and the iPhone had worked fairly well for me when I was a bachelor, so I got my wife a new iPhone.
Unfortunately, problems cropped up when I tried sharing calendars across our home Mac and the two iPhones. First, subscribed calendars are read-only on the iPhone, so there was no way for us to update them with changes to the kids’ schedules. Even worse, subscribed calendars are not available on MobileMe. This was a showstopper for both of us because we work on Windows machines all day long and wanted to be able to use the Calendar in MobileMe. These, and other problems, forced me to rethink what I wanted from our calendaring solution and how to accomplish it.
Most traditional calendar programs (Microsoft Exchange and Lotus Notes for example) have one calendar with the ability to tag calendar entries with different categories (Home, Work, School, etc.). However, iCal contains multiple calendars, with names like “Home,” “Work,” “School,” and so on. While an entry in a traditional calendaring program can be tagged with multiple categories, each calendar entry in iCal belongs to one and only one calendar.
In addition, there are different types of calendars. For example, a user-created calendar is a “personal calendar.” Users can also subscribe to calendars, which can be either personal or public. An example of a personal calendar subscription is my subscription to my wife’s calendar. A subscription to the 2009 Kansas Football schedule is an example of a public calendar subscription. Finally, there are oddball calendars that don’t fit into the “personal” or “public” types. For example, a birthday calendar can be created in iCal from the contacts’ birthdays in the Mac’s Address Book.
Finally, I had to keep in mind that I was dealing with three Apple calendaring platforms—iCal on the Mac, Calendar on the iPhone, and Calendar in MobileMe online.
I faced a number of problems. First, some types of calendars appear on some of the platforms and not others. Second, some types of calendars are read-only on some of the platforms and not others. So, for example, I couldn’t see my subscribed calendars (my wife’s and our children’s) when logged into MobileMe. I could see them on the iPhone, but couldn’t edit them. Confusion reigned—I needed to create harmony!
Creating calendar harmony
My desire was simple. I wanted each user’s calendars—whether personal, subscribed, or birthday—to appear in and work the same way on each calendar platform. Therefore any solution had to be able to the following:
- Subscribe to, view, and edit each others’ personal calendars on all three platforms.
- View each others’ publicly subscribed calendars on all three platforms.
- View each others’ birthday calendar on all three platforms.
- Sync wirelessly, automatically, and reliably.
Although my desire was simple, the steps involved were a bit more complicated. It took some time and experimentation to work this out. I’ve outlined the steps below so you don’t have to figure this all out on your own.
Research led me to several potential solutions, including syncing with Google Sync for the iPhone (google.com/mobile/products/sync.html#p=apple), Spanning Sync (spanningsync.com), or BusySync (busymac.com/busysync/index.html). I decided against Google Sync because I’ve read that it is a battery hog. In addition, I wanted a solution that would make it easy to revert back to pure Apple technology if and when Apple makes their calendars share information better. In the end, it seemed like a toss up between Spanning Sync and Busy Sync, but I chose the latter because there was more documentation on their Web site, including helpful video guides (busymac.com/busysync/videos.html).
BusySync’s bread and butter is sharing iCal calendars on a LAN without the need for a dedicated server (like Leopard Server). It is intended for use by families and small businesses, but is flexible and powerful enough to solve a variety of calendar problems. BusySync allows a subscribed calendar to sync to MobileMe and makes both MobileMe and iPhone Calendar subscriptions read/write capable.
BusyMac’s Web site offers many different configuration options (busymac.com/faq/config.html) depending on what you want to accomplish and your network infrastructure (or lack thereof in my case). I chose to have BusySync use Google Calendars as a conduit so I could overcome the problems outlined above (busymac.com/faq/config.html#google-remote). Setup was fairly straightforward, if a bit tedious at times, but now all of my calendars appear and work the same in all platforms, and so far syncing has worked fine. Below are the steps I took to reach Apple Calendar nirvana.
Step-by-step guide: Syncing calendars
- Set up a Google Calendar (google.com/calendar) for each user. You will need to set up a Google e-mail account if you don’t already have a one. Google Calendar requires you to have a primary calendar which you cannot delete. Later, we will merge that account with your primary calendar in iCal. Don’t add any events to this new calendar or add any other calendars until we’re finished.
- Download and install BusySync (busymac.com/download/BusySync.dmg) on each user’s computer (there is a 30-day trial period after which the cost is $25 per computer).
- Add any personal Calendars you want to access to each user’s iCal by going to File >New Calendar >On My Mac (you may already have Calendars in iCal; if you do just make sure they are local).
In my case, I created two personal Calendars in iCal, one called “Bryan” for myself and the other called “Ben” for my stepson. My wife also created two personal Calendars on her iCal: one for herself called “Sarah” and one for her daughter called “Caroline.” You can use whatever names you’d like for the calendars, as long as the names are unique across all calendar accounts. You may want to split your personal calendars out into something like home and work calendars—just remember to make the names unique (e.g., “Bryan’s Home” and “Bryan’s Work”).
The next step is to configure BusySync. Follow the directions in this step for each user.
- Open the BusySync Preference Pane, go to the General tab, click on the button labeled “Start BusySync.” The next two tabs, “Publish” and “Subscribe” can be ignored unless you are using BusySync over a LAN.
- Go to the Google tab and click on the button labeled “Settings.” Then enter the user’s Google login and password.
- The dual panes in the “Google” tab (Fig. 3) show your local calendars on the left in the “Publish to Google” column and Google Calendars to which you can subscribe on the right in the “Subscribe to Google Calendars” column. The only Calendar in right column should be the default Google Calendar; none of the local calendars in the left column should be checked.
- Merge the default Google Calendar with your primary local Calendar(s). To do so, subscribe to the primary Google Calendar in BusySync by selecting the checkbox next to it in the right column (Fig. 3). Then, export your primary iCal calendar(s) (“Bryan” in iCal on my Mac, “Sarah” on my wife’s Mac) by choosing File > Export in iCal. Double-click the file you exported and when prompted chose to merge it with the Google Calendar you just subscribed to. Check to ensure that your merged Calendar contains all your iCal entries and that syncing works, then delete the calendar that you exported. This will in effect merge the two calendars, without losing any data you may have already entered into your local iCal Calendar.
You will notice that the newly created merged calendar only appears in the right hand column (you usually have to exit and reopen System Preferences for changes to Calendar names to take effect). A Calendar that is synced or shared may appear in many places, but is hosted in only one, and Calendars can only be deleted from the system on which they are hosted.
Selecting the check box next to a local Calendar on the right will kick off synchronization. In just a few minutes the Calendar you selected and all its events will be added to your Google Calendar and to your MobileMe and iPhone Calendars. I suggest you sync all of your local Calendars to Google.
At this point you should be able to see all of the calendars you have checked in the Google tab of the BusySync preference pane in Google Calendar, iCal, on MobileMe, and in the iPhone’s Calendar app. The next step is to share them.
In our case, Sarah and I wanted to share each other’s Personal Calendar and the Calendars created for our children. Here’s how you do it:
- Sign in to your Google Calendar account.
- Select the drop down arrow next to the Calendar you want to share and select “Share this Calendar.”
- Enter the Gmail e-mail account of the person with whom you want to share your Calendar.
- Select Permission Settings (I suggest “make changes to events”)
- Click the “Add Person” button and save your changes.
Do this for each Calendar you want to share. Google will send an e-mail to the user you selected, notifying them of the change. Have the person you are sharing the calendar with go back to the “Google” tab in the BusySync Preference pane. Your Calendars will now appear in their “Subscribe to Google Calendars” list. All they have to do is select the checkboxes next to the desired calendars and BusySync does the rest. Your shared calendars appear in both users’ iCal, Mobile Me, and iPhone Calendars. If you choose “make changes to events” then both users can edit the Calendar on any platform and changes will propagate to all platforms for both users.
Public calendars and birthdays
What about those Public Calendars you can subscribe to, like your favorite sports team’s schedules? Normally they don’t appear on MobileMe, but they can by using BusySync. Follow these steps:
- Click on the URL of a Calendar you want to subscribe to and add it to iCal as a new Calendar.
- Return to the “Google” tab in BusySync and select the Calendar to sync to Google.
Adding birthdays: There is a preference in iCal for adding a “Birthday” calendar from the contact data in Address Book. Don’t use this! If you do, you won’t be able to see the resulting calendar on MobileMe or the iPhone. Instead, download and install the excellent shareware solution called Date to iCal2 (nhoj.co.uk/datestoical) which turns the birthdays, anniversaries and other custom dates in Address Book into personal calendars, which can then be synced across all platforms.
Limitations and annoyances
The solution described in this article works very well, but it does have some limitations. One of them is the “BusyCal Conflicts” Calendar, which is automatically created when BusySync cannot synchronize calendar items and needs to put them somewhere. You can reduce problems associated with this by making all shared calendars read/write and by minimizing the time you are off-line and cannot synch. Also, BusySync can’t sync to-dos because Google Calendar doesn’t support them.
Maybe Apple will modify the iCal/Mobile Me/iPhone calendars and the underlying architecture, making third-party solutions unnecessary. Until then, it is fortunate that there are workarounds like this. Also on the horizon (and currently in beta) is BusyMac’s iCal replacement—BusyCal.
“Why can’t I delete a calendar on the iPhone?”
I ran into a puzzling dilemma in researching this solution. It seems that deleting calendars in iCal doesn’t always delete them from the iPhone. There is no delete Calendar function on the iPhone. To remove “orphaned” calendars from the iPhone follow these steps:
- Go to Settings >Mail >Contacts >Calendars, and select your Mobile Me account.
- Slide the Calendars button from ON to OFF then tap Delete from my iPhone. (This will delete all Calendars from your iPhone, including the unwanted orphan.)
- Finally, slide the Calendar button back to ON and your iCal Calendars will re-sync with the iPhone.