Posso cancellare a livello di programmazione le notifiche della mia app dal Centro notifiche di iOS 5?

Vorrei rimuovere le vecchie notifiche che la mia app ha apportato dal Centro notifiche di iOS 5. Posso farlo? Se é cosi, come?

Per rimuovere le notifiche dal Centro notifiche è sufficiente impostare il numero del badge icona su zero.

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 

Funziona solo se il numero cambia, quindi se la tua app non usa il numero del badge che devi prima impostare, quindi resettalo.

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

Un metodo più diretto che utilizzo (e non richiede badge) consiste nel ripristinare la matrice delle notifiche locali pianificate su se stessa, come segue:

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

Ciò ha l’effetto che tutte le notifiche pianificate 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 tutte le notifiche, è semplicemente la seguente:

  [[UIApplication sharedApplication] cancelAllLocalNotifications]; 

Sì, puoi annullare specifiche o tutte le notifiche locali chiamando

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

o

 [[UIApplication sharedApplication] cancelAllLocalNotifications]; 

Se vuoi cancellare le notifiche in swift 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 } 

Per me ha funzionato solo con l’invio di una notifica locale con solo un badge 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 nuovamente il badge su 0.