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.

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

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

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.


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;

0

Para Objective C tienes que usar:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];            

0

Rápido 5

UIApplication.shared.applicationIconBadgeNumber = someNumber
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.