2011-10-14 11 views

Respuesta

71

Para eliminar las notificaciones del Centro de notificaciones, simplemente establezca el número de la insignia de su icono en cero.

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 

Esto sólo funciona si los cambios en el número, así que si su aplicación no utiliza el número de tarjeta es necesario primer set, se vuelve a establecer.

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]; 
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 
+5

Esto no lo hizo trabajo para mí :( –

+3

Esto funciona ... Tienes que establecerlo en algún valor y luego restablecer a 0 ...... Gracias @voidStern – Meet

+0

@voidStern: Eres increíble ... :) – Nilesh

1

Para mí sólo funcionaba con el envío de una notificación local con solamente una insignia de esta manera:

if([UIApplication sharedApplication].applicationIconBadgeNumber == 0) { 
     UILocalNotification *singleLocalPush = [[UILocalNotification alloc] init]; 
     singleLocalPush.fireDate = [NSDate dateWithTimeIntervalSinceNow:1]; 
     singleLocalPush.hasAction = NO; 
     singleLocalPush.applicationIconBadgeNumber = 1; 
     [[UIApplication sharedApplication] scheduleLocalNotification:singleLocalPush]; 
     [singleLocalPush release]; 
    } else { 
     [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 
    } 

Y en el método

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 

puedo configurar la tarjeta de identificación a 0 de nuevo .

3

Sí, puede cancelar las notificaciones locales específicos o llamando a todos los

[[UIApplication sharedApplication] cancelLocalNotification:...]; 

o

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
19

Un método más sencillo que yo uso (y no requiere insignias) es para restablecer el una serie de notificaciones locales programadas a sí mismo, de la siguiente manera:

UIApplication* application = [UIApplication sharedApplication]; 
    NSArray* scheduledNotifications = [NSArray arrayWithArray:application.scheduledLocalNotifications]; 
    application.scheduledLocalNotifications = scheduledNotifications; 

Esto tiene el efecto de que y las notificaciones programadas siguen siendo válidas, mientras que todas las notificaciones "antiguas" que están presentes en el Centro de notificaciones se eliminan. Sin embargo, también tiene la sensación de algo que podría cambiar en una versión futura de iOS, ya que no he visto ninguna documentación para este comportamiento.

Por supuesto, si desea eliminar todos notificaciones, es simplemente la siguiente:

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
2

Si desea borrar las notificaciones en Swift y el IOS 10,0

import UserNotifications 

if #available(iOS 10.0, *) { 
    let center = UNUserNotificationCenter.current() 
    center.removeAllPendingNotificationRequests() // To remove all pending notifications which are not delivered yet but scheduled. 
    center.removeAllDeliveredNotifications() // To remove all delivered notifications 
} 
Cuestiones relacionadas