Several native applications on the iPhone use application badges as an indicator of new messages, think email and SMS. Creating badges is quite straightforward and is nothing more than a method call, passing in the desired number to display.
The image below shows how a badge may look when applied to your application. The code to create the badge is below the image.

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:99];
As one would expect, the iPhone does limit the number of digits it will display – see the code and image that follow:
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:123456];

One nice feature that would be welcome is to have a means to create a badge with text. I’ve seen a number of references to using an undocumented method (see below), however, I was unable to get the code to work.
[[UIApplication sharedApplication] setApplicationBadge:@"Beer"];
Although you can set a badge for an application icon, I believe the real creative uses of this will evolve if/when Apple provides a means for an application to update the badge when the application is not running. For example, I am working on an application that needs to notify users that they are x number of days away from an upcoming event. It would be a nice feature of the application if one could glance at the icon and see the current count, versus having to start the application.
I’ll keep my fingers crossed…
Comments
10 Responses to “Using Application Badges”
Leave Comment
All Content Copyright © 2008-2012 • iOS Developer Tips, All Rights Reserved.
Hey John,
As someone who is new xcode thow would I pass a variable to the App Badge?
Thanks, Doug
[Reply]
Hi Doug,
You should be able to pass in any variable of type NSInteger.
NSInteger x = 99;
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:x];
John
[Reply]
Hi, can you show negative number? That way, temperature could be shown (for an online weather app)
[Reply]
John Muchow Reply:
February 16th, 2010 at 8:53 am
Hi Bjørn,
Unfortunately, it looks like zero or any negative value removes the badge from the display.
[Reply]
Is it possible to use badges on a segmented control? We’re working on an app where one of the buttons opens a comments pane. I’d like to use a badge to display a count of new comments since last viewed. I’ve been told this isn’t possible.
[Reply]
Hey Nick,
You could achieve that by positioning a custom UIView with badge image and label over the segmented control or use the method setImage:forSegmentAtIndex: to set a custom image as the segments content. You could create the segment content as a custom UIView then render it as an image (checkout http://pastie.org/244916) then set that as the segment image. Maybe create a UIView subclass with a method that takes a comment number and returns a UIImage to set as the segment control content when the comment count changes?
[Reply]
Hi,
How do you update the badge when your app is inactive? I want my app to check msgs and update the badge but once I close the app, the timer stops.
Thanks.
[Reply]
John Muchow Reply:
October 17th, 2010 at 8:11 pm
John, you will need to look into the multi-tasking API’s to manage this, by default once something is put into the background, it is essentially paused.
[Reply]
You can schedule that you get an update using UILocalNotification. The class reference discusses the options for it, but basically you can schedule when your app receives a message. This posting is also very helpful: http://stackoverflow.com/questions/5375355/clear-app-badge-with-local-notifications
[Reply]
To use the a zero or a negative number, would you be able to use for example x=(0) or x=(-9) with the parentheses keeping it from actually being a true zero or negative number. Just a thought.
[Reply]