Actualización de la insignia de iOS sin notificaciones push

He visto algunas aplicaciones pendientes que actualizan sus insignias de aplicaciones a medianoche, siempre mostrando el número correcto de tareas vencidas. Lo hacen sin el uso de notificaciones automáticas, así que mi pregunta es: ¿cómo lo hacen? ¿Usan notificaciones locales? En caso afirmativo, ¿las llaman cuando el dispositivo está apagado? Estoy un poco confundido y agradecería algunas aportaciones.

Prueba esto

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]; 

Para hacer esto a través de notificaciones locales, debe establecer el valor en applicationIconBadgeNumber

 UILocalNotification *localNotification = [[UILocalNotification alloc] init]; localNotification.applicationIconBadgeNumber = 1;// set here the value of badge 

Desde iOS 4.0 puedes disparar notificaciones locales en todos los dispositivos que se ejecutan al menos iOS 4.0. Observe la clase UILocalNotification , que le permite establecer la insignia a la medianoche sin que su aplicación se ejecute.

Y para todos los que usan Swift nuevo y shiny:

 UIApplication.sharedApplication().applicationIconBadgeNumber = someNumber 

Swift 3:

 UIApplication.shared.applicationIconBadgeNumber = someNumber 

Establezca la propiedad applicationIconBadgeNumber UIApplication en su código cuando la aplicación se esté ejecutando:

 [UIApplication sharedApplication].applicationIconBadgeNumber = someNumber; 

Para Objective C tienes que usar:

 [[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];