How do I draw a badge on my Dock icon using Cocoa?
Asked Answered
A

3

27

How do I add a badge to the Dock icon for my app using Cocoa? Is there any roughly "standardized" way to do this?

(I'm referring to the kind of badges that show up in Mail, iChat etc. to indicate the number of unread messages and the like.)

Cocoa Touch does provide one such method, but I haven't been able to find any equivalent for a regular Cocoa application.

Appleby answered 25/12, 2008 at 13:15 Comment(1)
Great resource is also WWDC 2003 Session 424 - Cocoa: Tips and Tricks youtu.be/Y3jYF0EhxOg?t=1099Faison
L
26

Use

 [[[NSApplication sharedApplication] dockTile] setBadgeLabel:@"2234"];

This method, and the NSDockTile class, has been available since Leopard.

Lh answered 12/12, 2009 at 6:30 Comment(1)
Here is the same thing in Swift 4: NSApplication.shared.dockTile.badgeLabel = "123"Discommode
B
25

It should be noted that NSDockTile is only available on Leopard. If you need to target Tiger you'll need to use -setApplicationIconImage: on your NSApplication object and draw your badge by hand.

Also, it's not in the documentation outside of the release notes that I could find but you get your application's dock tile by sending the dockTile message to your NSApplication object.

NSDockTile *tile = [[NSApplication sharedApplication] dockTile];
[tile setBadgeLabel:@"Lots"];
Battaglia answered 26/12, 2008 at 3:51 Comment(2)
Realistically, with 10.6 coming out in the next 6 months or less, only supporting Leopard is probably just fine.Inhale
In yours and my case maybe so, but Debajit should at least be aware of the implications of using NSDockTile and the other available options.Battaglia
I
17

A quick google search turned up the NSDockTile class. Seems pretty self-explanatory once you take a gander at the documentation.

Inhale answered 25/12, 2008 at 14:34 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.