I have an iPhone, iPad, MacBook and Mac mini and am using Reminders on all my devices synced through iCloud. I have several lists created and no incomplete items at the moment. However, the Reminders badge count on MacBook shows "2" while on Mac mini it shows "1". On both iPhone and iPad the count is none ("0"), which is correct. If I check on my iCloud.com account the count is also none. Where do these phantom alerts come from then? And how do I get rid of them?
TLDR: Launch the Calendar app, go to Settings, Alerts, then enable "Show shared calendar messages in Notification Center" and reboot.
Longer explanation follows.
I was having this same problem: no badge on my iOS devices, but a badge of "1" on my Mac.
After searching through the Console app, I found some messages from
CalNCService that indicated it was requesting a badge count of "1" on behalf of a
EKCalendarInviteReplyNotification. This suggested that the badge was the result of some activity on a shared Reminders list. It even printed out the name of the list in question - a shared list that I had "left" a while ago.
But, there were no notifications in Notification Center related to this list. Well, it turns out the notification was being filtered out by a setting in the Calendar app. I went to
Calendar.app -> Settings -> Alerts and enabled "Show shared calendar messages in Notification Center".
That by itself did nothing, because the event was already filtered. So I went to Activity Monitor and force-quit the
CalNCService. I restarted the Calendar app so it would restart the service (rebooting would do the trick too), and BOOM, the system presented me with the missing notification!
The notification was that I no longer had access to this shared list (sigh, who cares). I'm guessing the person who originally shared it with me had deleted it. So I simply dismissed that notification and the badge went away.
Why does Calendar have anything to do with Reminders? It's because Reminders, internally, was originally (and seems to still be) implemented using "secret" hidden calendars. They did this because, in the days before iCloud, Calendar syncing was one of only a handful of ways to share data between devices. So you could sync and share your Reminder lists even if you were using Google or Yahoo or whatever else. Another way to share data was through email servers - which is exactly what the Notes app did. Reminders == Calendars, Notes == Emails.
Clever at the time, but I'm sure the engineers are quite sick of it now.
You can try force refresh Reminders in iCloud with a debug trick:
Go to Terminal (in /Applications/Utilities/Terminal.app) and enter the following command:
defaults write com.apple.reminders RemindersDebugMenu 1
Now open Reminder (or restart the app) and you will see a debug menu, go into that menu and click Refresh, and see if it solves your problem.
Here is a picture of that menu:
To get rid of the debug menu enter this command:
defaults delete com.apple.reminders RemindersDebugMenu
Then restart Reminder app.
First I thought, restoring an older instance of the "Calendars and Reminders" storage via iCloud.com fixed the phantom badge for me, but it came back after a little while!
After spending a ridiculous amount of time trying all the suggestions here and all over the internet, the only procedure that really helped in the end (at least so far, fingers crossed!) was the one described in the "Mac" section of the Apple Support document "Get help using iCloud Contacts, Calendars, or Reminders":
- Go to
System Preferences... / iCloudand disable
- Close the System Preferences
- Wait for 1 minute
- Go to
System Preferences... / iCloudagain
- Reboot the Mac
That last point is crucial. Only after the reboot, the phantom badge was gone (and is still gone since about 30 minutes). And no, rebooting alone, without the steps before, didn't help either.
Found an answer here:
What does appear to work is killing the Dock process. To do this, simply launch Activity Monitor, find the item named “Dock,” and click Quit Process. The Dock will disappear, relaunching a few moments later. And behold! No more phantom badge.
It worked for me when everything else failed.