2012-10-25 13 views
6

Ho un problema con un aspetto della gestione LocalNotifications - eliminazione singola notifica in iOS 6.Eliminazione LocalNotifications da NotificationCenter (iOS 6)

enter image description here

sono in grado di creare un LocalNotification con il contenuto del testo e il fuoco data e funziona.

Su iOS 5 la notifica si verifica come AlertView sulla schermata principale con due pulsanti e scompare dopo aver toccato entrambi. Posso annullare l'incendio della notifica utilizzando [[UIApplication sharedApplication] cancelLocalNotification:theNotification]. Non c'è nessun problema qui.

In iOS 6 la notifica si verifica in un Centro note come mostrato sopra quando viene attivato. Se lo annullo utilizzando [[UIApplication sharedApplication] cancelLocalNotification:theNotification], non si attiva - funziona. Ma dopo spara ...

Il mio problema:

io non sono in grado di cancellare questo singolo sparato notifica da parte del Centro di notifica. Ad esempio, desidero che la notifica scompaia dopo che è stata toccata o dopo che è stata eseguita un'azione all'interno dell'applicazione.

Quello che ho cercato:

  • usando [[UIApplication sharedApplication] cancelLocalNotification:theNotification] - cancella il fuoco di notifica (in realtà non c'è bisogno in quanto la notifica fatto fuoco già), ma non cancella sparato notifica dal Centro di notifica
  • rimozione degli elementi dall'array [[UIApplication sharedApplication] scheduledLocalNotifications] - non funziona, perché questa funzione restituisce sempre l'array vuoto, indipendentemente dal numero di notifiche (funzionanti!) impostate (qualcuno sa perché?)

Quello che sto facendo ora

sto Eliminazione di tutte le notifiche utilizzando [[UIApplication sharedApplication] cancelAllLocalNotifications] - li annulla e cancella dal Centro di notifica, e quindi creare di nuovo, senza quello che volevo cancellare.

Come potete vedere, questa è una soluzione piuttosto idiota e ridondante, ma non ho potuto trovare di meglio finora.

Qualche suggerimento?

+0

Grazie @deleteme. Prendo tempo a occuparmi di questo problema. Leggendo la tua domanda renditi conto di come ottenere un array vuoto quando chiamo '[[UIApplication sharedApplication] scheduledLocalNotifications]'. Immagino che userò la tua soluzione per il momento. – IgniteCoders

risposta

1

Prova questo ..... Potrebbe essere questo aiuto ... Scrivere questo codice da cui si desidera cancellare tutte le notifiche.

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

Per cancellare una sola notifica

È possibile ottenere una vasta gamma di notifica in programma dal: @property(nonatomic,copy) NSArray *scheduledLocalNotifications

Prendi quello che si desidera per il numero indice della vostra scelta e quindi passare l'UILocalNotification * a - (void)cancelLocalNotification:(UILocalNotification *)notification.

È possibile salvare un valore univoco per la chiave nel sito utente della notifica locale. Ricevi tutte le notifiche locali, passa attraverso l'array ed elimina la notifica specifica.

codice come segue,

UIApplication *app = [UIApplication sharedApplication]; 
NSArray *eventArray = [app scheduledLocalNotifications]; 
for (int i=0; i<[eventArray count]; i++) 
{ 
    UILocalNotification* oneEvent = [eventArray objectAtIndex:i]; 
    NSDictionary *userInfoCurrent = oneEvent.userInfo; 
    NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"uid"]]; 
    if ([uid isEqualToString:uidtodelete]) 
    { 
     //Cancelling local notification 
     [app cancelLocalNotification:oneEvent]; 
     break; 
    } 
} 
+0

So come cancellare tutte le notifiche (sono sicuro che l'ho fatto notare). Il mio obiettivo è cancellare una singola notifica specifica. – deleteme

+0

Controlla di aggiornare la mia risposta ....... per cancellare una singola notifica. – Wolverine

+0

i Aggiornare anche codice sorgente di esempio nella mia risposta ..... potrebbe essere utile ... – Wolverine