Preventing Duplicate Calendar Events in iPhone OS 3.1
The calendar syncing capabilities of the iPhone (and its sibling, the iPod touch) have been evolving quickly, and in many ways for the better, but the latest enhancements to these capabilities can create an unexpected problem for users. Specifically, calendar syncing using iPhone OS 3.1 (the most recent version, as of this writing) can all too easily lead to duplicate calendar events on your device. Since these changes threw a bit of a monkey wrench into my in-progress update to “Take Control of Syncing Data in Leopard,” I wanted to share what I’ve discovered.
The underlying cause for these duplicate events is complicated, involving MobileMe, iTunes, and how read-only subscribed calendars in iCal sync to your shiny handheld device. To understand what’s going on, you need to know something about how calendar syncing on the iPhone/iPod touch has changed over time.
Also, keep in mind that I’m talking about two types of calendars here:
- Read-write calendars you created in iCal and populated with your own events. These are by far the most common.
- Read-only calendars from some remote source to which you’ve subscribed in iCal. These calendars might be shared from a service like Google Calendar, or found on iCalShare or Apple’s list of iCal calendars. Many people have never subscribed to a public calendar in iCal before, but it’s easy: either choose Calendar > Subscribe and enter a URL to a shared calendar or download a .ics file from iCalShare or Apple (Calendar > Find Shared Calendars in iCal).
iPhone OS 2.x — In iPhone OS 2.x, you could sync your iCal calendars with your device in two ways:
- iTunes with a USB connection: This syncing method let you sync any combination of your iCal calendars – both those you created in iCal and those read-only calendars to which you subscribed in iCal. Using the iTunes syncing interface, you could pick which calendars you wanted to sync with your device, and which ones not to sync.
- Over the air with MobileMe: With this method you could sync all the calendars that you created in iCal over the air, bypassing the USB/iTunes connection; as a bonus, you gained instant push updating between the calendars on your device and those in iCal on your Mac (as long as your Mac was turned on and connected to the Internet, of course). However, MobileMe syncing did not sync any of your subscribed read-only calendars. Nor, if you chose this method, could you pick which of your iCal calendars to sync; MobileMe always synced all of your iCal-created calendars, willy-nilly.
Therefore, if you wanted to choose which calendars to sync with your device, or if you wanted any subscribed read-only calendars from iCal on your device, you had to sync the device using iTunes – and lose the benefits of push syncing.
iPhone OS 3.0 — Apple’s next major update to the iPhone OS eliminated the either/or choice between MobileMe and iTunes syncing and allowed you to sync your device using both methods. To accommodate this enhancement, changes were made in how the iPhone and iPod touch displayed calendars, as follows:
- iTunes with a USB connection: When you used this syncing method, each of the calendars that you synced ended up in a calendar collection on your device labeled “From My Mac.”
- Over the air with MobileMe: With this method, all of your iCal-created calendars ended up in a calendar collection on your device labeled with the name of your MobileMe account. Note, however, that you still couldn’t sync read-only subscribed calendars from iCal to your device using MobileMe.
This was a significant improvement because it allowed you to do the following:
- You could see your self-created iCal calendar events on your device by looking in the MobileMe collection.
- You could see your subscribed read-only calendar events by looking in the From My Mac collection.
- You could see all of your events by viewing All Calendars in the Calendar app on your device.
However, there was also the possibility of duplicate event confusion, because you could choose to sync the same calendar both with MobileMe and with iTunes. When you did that, a version of the calendar ended up both in the From My Mac collection and in the MobileMe collection. When you viewed All Calendars on your device, you would see events from that doubly synced calendar twice: one from each of the two collections.
So, if you synced with MobileMe, you had to make sure not to sync any of your self-created calendars with iTunes and only use iTunes to sync the calendars that MobileMe didn’t sync. (Moral: with great power comes great responsibility. I’m sure I’ve heard that somewhere before.)
iPhone OS 3.1 — The just-released iPhone OS 3.1 finally syncs your read-only subscribed calendars directly from MobileMe, eliminating the need to use iTunes syncing to get read-only subscribed calendars on your device.
(Note that read-only subscribed calendars have always synced with MobileMe from one Mac to another, but iPhone OS 3.1 can now access this information directly from MobileMe. Some might argue that the iPhone and iPod touch should have been able to do this all along.)
Unfortunately, you still can’t choose which calendars are included when you sync with MobileMe – it remains an all-or-nothing proposition. However, now “all” includes all of your read-only subscribed calendars from iCal as well as all the calendars you have created in iCal. As a result, if you want to pick which calendars to sync, you have to return to the same solution that you used with the iPhone 2.x firmware. That is, you need to choose to sync your device only with MobileMe (and sync all of your calendars) or only with iTunes (and choose which of your calendars to sync).
The Hidden Gotcha — Sounds reasonable, right? Not so fast, seeker: there’s a hidden gotcha lurking in the current implementation of calendar syncing. This problem affects iPhone and iPod touch users who have previously synced their calendars using iTunes but who now want to sync only with MobileMe.
Here’s the gotcha: when you turn off calendar syncing in iTunes to switch to MobileMe, those calendars that were in the From My Mac collection on your device are not deleted from your device. Instead, they are moved to an On My iPhone collection (this collection has a different name on the iPod touch, but serves the same purpose).
As a result, when you look at All Calendars on your device, you still see duplicate events: those events from the old calendars in the On My iPhone collection, as well as those events that reach your device over the air from MobileMe. Nor is there currently a way to delete the calendars in the On My iPhone collection. Curses!
Kludging the Gotcha — Luckily, I’ve figured out a workaround, albeit a clumsy one, that can eliminate such duplicates:
- In iCal, create a new empty calendar (give it an obvious name, like “Empty Calendar”).
- In iTunes, sync only that empty calendar with your device (if you have turned off iTunes syncing, you have to turn it back on, of course, for this step). When you sync, the From My Mac collection will now contain only that empty calendar.
The MobileMe collection on your device will still list the empty calendar, of course, but, since it contains no entries, you won’t see any duplicate entries when you view the All Calendars collection on your device. Later, if you turn off calendar syncing in iTunes, the empty calendar will move to the On My iPhone collection, where it will still be harmless.
(Note that if you have turned syncing off in iTunes so that you have an On My iPhone calendar collection, turning iTunes syncing back on replaces the On My iPhone collection with From My Mac. This From My Mac collection now contains the set of calendars you are currently syncing with iTunes.)
Maybe someday, if some future version of iTunes or the iPhone OS provides the capability to delete calendars from the On My iPhone collection, you can eliminate this empty placeholder calendar. However, even if that feature never appears, at least you won’t be seeing misleading duplicate events on your device.
3.1 is much worse than 3.0 when it comes to MobileMe calendar syncing. My calendar now has 1000 events from iCal subscription calendars that I usually leave hidden in iCal. The problem? No way to hide them on the phone!
So there's no way to view my important 3 calendars at the same time without thousands of extraneous events. It was actually better before 3.1 when my subscribed calendars weren't sync'd at all.
I would like to see:
1. Ability to choose which calendars sync via MobileMe
2. A way to turn on/off each calendar on the phone, just like in iCal
I agree with your wish list.
Did you send it to Apple? If you haven't you should, since Apple is more likely to change the way the iPhone software behaves if it actually gets direct user feedback about the problem.
Use this address:
I had this problem too. I believe I solved it by turning off the syncing from the prefs on the iPhone and then turning them back on. I do not have any empty calendars on my iPhone.
Thanks so much for this tip. It worked for me with my iphone 3gs.
I think I've figured out how to get rid of the annoying 'On my iPhone' sections in Contacts and Calendars in OS3.1.
The important thing is that the Contact and Calendar lists on the phone must be empty when you turn on MobileMe. The way I did it was to create a group called empty in iCal and Address Book, then configure iTunes to sync only that group for each. Sync that.
Now turn off MobileMe sync for Contacts and Calendars, select 'Delete from My iPhone', and turn it back on. It didn't offer to merge the data for me, it just did it. I now have Contacts and Calendar groups in a single list, not split into Mac/iPhone and MobileMe.
You can now go back and delete the Empty groups in iCal and Address Book, and set iTunes to not sync Contacts or Calendars.
Worked for me :)
This is not the worst problem with 3.1 synking, since you can dix it with a work around. The worst problem is that you no longer can choose which calendars you want to view in iPhone. Mine is cluttred. See this link
Having synced via MobileMe for a few weeks, made the mistake of doing a USB Sync with iTunes and ended up with duplicate Calendars AND duplicate Contacts in Address Book on the iPhone AND on the Mac, but fortunately, not on the MobileMe account, which only knew about its own data, and not the iTunes data.
Finally found the elegant way to eliminate the iTunes duplicates by:
On iPhone Settings > Mail,Contacts,Calendars > Accounts (MyMobileMeAccount) > Turn OFF the Calendar switch.
Then turn it back on. iPhone warns you you have calendars on your iPhone and asks if you wish to Merge or Delete. Just select Delete. This wipes all calendar info from the iPhone. Next sync update from Mobile Me will download a single set of calendars held at MobileMe. Next sync with the Mac will eliminate the duplicate calendars on the Mac.
Same process works with Address Book.
Problem fixed (after loosing half my hair)
You can view single calendars on iPhone, to eliminate clutter; only other choice is ALL.
WARNING to the above. You better make sure your MobileMe data is clean and complete before trying the above.
Everyone seems to have missed the fact that 3.0 added subscribing to calendars directly on the iPhone. I was using this to keep my personal calendars and subscribed calendars up to date even if iCal has not run for a long time. Now my iPhone calendars are a mess. I've had to disable calendar subscriptions on my iPhone to avoid duplicate or zombie entries and subscribed calendars are only as up to date as the last time iCal ran on a Mac. Apple - this is broken.
Even worse upgrading from 3.0 to 3.1 left me with two "MobileMe" groups of calendars. Only the new group, including subscribed calendars, would be deleted when turning MobileMe syncing off and on again. Only syncing with a second MobileMe account removed the older entries.
I have a similar problem. After upgrading to 3.1 (among a host of other problems) I now have 10 (yes 10) duplicate MobileMe groups of calendars. I have deleted my MobileMe account completely from the phone, and re-added it. Same issue. Not sure what the deal is, here...
What a splendid tip. I followed the Empty Calendar route and now all my duplicates have disappeared. Great!
Now can you do the same thing for Contacts? My list is not only littered with duplicates but also triplicates and in some cases the same contact appears four or five times. I tried a reset but that did more harm than good. The duplicates, etc, are still there, and I have lost a lot of data from other parts of the iPhone. Life can never be simple, can it?
What if you choose Card > Look for Duplicates in Address Book? That usually does a pretty good job of merging duplicates.
You're quite right, Adam. But I don't have any problems with my Address Book. Where all the duplicates are springing up is in my iPhone, and it's getting worse.
I had endless problems with 3.1 and duplicate entries especially as some Apps such as Omnifocus create their own subscription calendars. The only solution that worked was to go into settings on the iPhone and delete the ME mail account. This then erases everything associated with ical contacts mail etc. Adding the ME account back in restored everything to normal, removing dupes from ical and contacts. WARNING. You must be sure that all your ical contacts email etc. are up-to-date on your ME account - anything that has been added on your iPhone that is not in sync will be lost.
Glory be! All my iPhone duplicate contacts have now disappeared. Many, many thanks.
Opposite problem. I get duplicate events but they appear in iCal, not on the iPhone. Started w/3.1. I do not use MobileMe [but it tries to rear its ugly head thru Sync and Conflict Resolver].
So: a brand new recurring event, in a brand new calendar, when changed on the iPhone is treated as a new and therefore dup event in iCal. Say, 3 changes on the iPhone... I now have that many events in iCal, plus the original of course.
On the iPhone... all is well. I have been pounding on this problem for a couple of weeks now. Any thoughts from those with similar issue?
this guy had the most convenient solution. :D
About duplicate contacts and calendars on iPhone 3.0
By: grapegraphics on Thu, Jun 18 2009 at 1:57PM PDT
iPhone settings (Settings/Mail, Contacts, Calendars/MobileMe)
- turn OFF "Contacts," wait and then select DELETE from my iPhone.
- Turn ON "Contacts," wait and then select MERGE
- turn OFF "Calendars," wait and then select DELETE from my iPhone.
- Turn ON "Calendars," wait and then select MERGE
Seemed to work for me
• Make an archive from iCal.
• Reset the MobileMe sync history. Hold down the Option key, click the MobileMe sync circle in the menu bar and choose the Reset Sync Services option from the drop down menu.
• Open the MobileMe System Preferences and in the Account tab, click the Sign Out... button and enter random letters and numbers in the member name and password fields. You should receive an invalid member name or password error message. Do this 3 times.
• Now log back in with your correct member name and password.
• Next, click the Sync tab and click Synchronize with MobileMe, set it to manually, check only calendars at this time, then click the Advanced button in the Syc tab. If you get a message that states another computer with the same name is already registered, click Use Same name.
• In the Advanced/Sync window, select the registered computers.
• You should then be prompted to remove the unused sync data, which you want to do.
(You will resync the data from your computer with the updated information so no data will be lost. This option will help to prevent the duplicated calendars from returning).
• Select only the check box for Calendars.
• Now you need to reregister this computer if it does not register automatically. Click the Sync tab, and click Synchronize with MobileMe, this should register the computer.
• The next message should say On MobileMe with sync data from this computer and the arrow should point to MobileMe, Computer --> MobileMe, and the text above the icons says "On MobileMe with sync info from this computer. If it does not say that you need to change the arrows so that it does.
• After you have done this and made sure the arrow points to MobileMe, Computer --> MobileMe, and the text above the icons says "On MobileMe with sync info from this computer, then click the Replace button.
• Now log in to your account online and see if the calendars match your computer: http://www.me.com/calendar
• If you're subscribed to any Calendars, these won't appear in MobileMe, but they should appear in your synced devices.
• You can now recheck the sync options in the MobileMe System Preferences that were checked earlier and sync as you were normally.