2011-02-01 10 views
79

He visto algunas aplicaciones pendientes que actualizan sus insignias de la aplicación a la medianoche, siempre mostrando el número correcto de tareas correctas. Lo hacen sin el uso de Notificaciones Push - entonces 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.Actualización de la insignia de iOS sin notificaciones push

Respuesta

130

Prueba este

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]; 

Para hacer esto a través de notificaciones locales tiene que establecer el valor en applicationIconBadgeNumber

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

Esta es la forma en que cambia el número de la insignia, pero para poder hacerlo mientras la aplicación está en segundo plano o si el teléfono está dormido, es posible que deba considerar notificaciones cal, o tareas programadas. – Jasarien

+2

En iOS 8.0 y posterior, su aplicación debe registrarse para notificaciones de usuario usando - [UIApplication registerUserNotificationSettings:] antes de poder establecer la insignia de icono. – unmircea

7

Conjunto UIApplication 's applicationIconBadgeNumber propiedad en su código cuando se ejecuta la aplicación:

[UIApplication sharedApplication].applicationIconBadgeNumber = someNumber; 
13

Desde iOS 4.0 puede disparar l notificaciones locales en todos los dispositivos que se ejecutan al menos iOS 4.0. Mira en la clase UILocalNotification, te permite configurar la insignia a la medianoche sin tener tu aplicación en ejecución.

+0

¿Esto también funciona cuando el dispositivo está apagado? – fabian789

+0

Uhm, el iPhone ni siquiera es capaz de encender la alarma cuando está apagada, entonces no, la insignia no se actualizará. Pero cuando lo vuelva a encender, activará la (s) notificación (es) que actualizarán la insignia. – JustSid

+0

Ok, eso es lo que quería saber. ¡Gracias! – fabian789

8

Y para todos los que usan nueva y brillante Swift:

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ámica en este momento. –

+0

sí, tienes razón; En este caso, sin embargo, no hay nada en la sintaxis que pueda cambiar (es una tarea simple) por lo que probablemente no sea necesario :) –

+1

Jiri, comentario divertido en retrospectiva ;-) – Tim

0

Para Objective C que tienen que utilizar:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];    
Cuestiones relacionadas