2011-10-14 13 views

risposta

71

Per rimuovere le notifiche dal Centro notifiche, è sufficiente impostare il numero dell'icona su zero.

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 

Questo funziona solo se cambia il numero, quindi se la vostra applicazione non utilizza il numero di badge dovete primo set, poi ripristinarlo.

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

Questo non ha fatto lavoro per me :( –

+3

Questo funziona ... Devi impostarlo su un valore e poi resettare su 0 ...... Grazie @voidStern – Meet

+0

@voidStern: Sei fantastico ... :) – Nilesh

1

Per me ha funzionato soltanto con l'invio di una notifica locale, con solo un distintivo come questo:

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]; 
    } 

E nel metodo

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

posso impostare il distintivo a 0 di nuovo .

3

Sì, è possibile annullare specifiche o tutte le notifiche locali chiamando

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

o

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
19

Un metodo più semplice che uso (e non richiede badge) è quello di ripristinare la array di notifiche locali pianificate a se stesso, come segue:

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

Questo ha l'effetto Le notifiche programmate rimangono valide, mentre tutte le notifiche "vecchie" presenti nel Centro notifiche vengono rimosse. Tuttavia, ha anche la sensazione di qualcosa che potrebbe cambiare in una versione futura di iOS, in quanto non ho visto alcuna documentazione per questo comportamento.

Naturalmente, se si desidera rimuovere tutti notifiche, è semplicemente la seguente:

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
2

Se si desidera cancellare le notifiche in rapida e 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 
} 
Problemi correlati