I have seen a few todo apps that update their app badges at midnight, always showing the correct number of due tasks. They do this without the use of Push Notificat
Set UIApplication
's applicationIconBadgeNumber
property in your code when application is running:
[UIApplication sharedApplication].applicationIconBadgeNumber = someNumber;
Swift 5
UIApplication.shared.applicationIconBadgeNumber = someNumber
Since iOS 4.0 you can fire local notifications on all devices that run at least iOS 4.0. Look into the UILocalNotification
class, it allows you to set the badge at midnight without having your app running.
Try this
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
To do this through local notifications you have to set the value in applicationIconBadgeNumber
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.applicationIconBadgeNumber = 1;// set here the value of badge
And for everyone using new and shiny Swift:
UIApplication.sharedApplication().applicationIconBadgeNumber = someNumber
Swift 3:
UIApplication.shared.applicationIconBadgeNumber = someNumber
For Objective C you have to use:
[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];