Actualización de la insignia de iOS sin notificaciones push

86

He visto algunas aplicaciones de tareas pendientes que actualizan sus insignias de aplicaciones a la medianoche, mostrando siempre el número correcto de tareas pendientes. Hacen esto sin el uso de notificaciones automáticas, por lo que mi pregunta es: ¿cómo lo hacen? ¿Usan notificaciones locales? Si es así, ¿se les llama cuando el dispositivo está apagado? Estoy un poco confundido y agradecería alguna aportación.

fabian789
fuente

Respuestas:

137

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
raaz
fuente
1
Así es como cambia el número de placa, pero para hacerlo mientras la aplicación está en segundo plano o si el teléfono está inactivo, es posible que deba consultar las notificaciones locales o las tareas programadas.
Jasarien
2
En iOS 8.0 y posterior, su aplicación debe registrarse para recibir notificaciones de usuario usando - [UIApplication registerUserNotificationSettings:] antes de poder configurar la insignia del icono.
unom
17

Y para todos los que usan Swift nuevo y brillante:

UIApplication.sharedApplication().applicationIconBadgeNumber = someNumber

Swift 3:

UIApplication.shared.applicationIconBadgeNumber = someNumber
Jiri Trecak
fuente
2
Cuando sugiera respuestas rápidas, es una buena práctica incluir qué versión está cubriendo, ya que es muy dinámico en este momento.
Juan Boero
Sí, tiene usted razón ; Sin embargo, en este caso, no hay nada en la sintaxis que pueda cambiar (es una asignación simple) por lo que probablemente no sea necesario :)
Jiri Trecak
3
Jiri, comentario divertido en retrospectiva ;-)
Tim
13

Desde iOS 4.0, puede activar notificaciones locales en todos los dispositivos que ejecutan al menos iOS 4.0. Mire en la UILocalNotificationclase, le permite configurar la insignia a la medianoche sin tener su aplicación en ejecución.

JustSid
fuente
Uhm, el iPhone ni siquiera puede encender el despertador cuando está apagado, así que no, la insignia no se actualizará entonces. Pero cuando lo vuelva a encender, activará la (s) notificación (es) que actualizarán la insignia.
JustSid
Ok, eso es lo que quería saber. ¡Gracias!
fabian789
7

Establezca UIApplicationla applicationIconBadgeNumberpropiedad en su código cuando la aplicación se esté ejecutando:

[UIApplication sharedApplication].applicationIconBadgeNumber = someNumber;
Vladimir
fuente
0

Para Objective C tienes que usar:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];            
Vaibhav Shiledar
fuente
0

Rápido 5

UIApplication.shared.applicationIconBadgeNumber = someNumber
Ben
fuente