2012-03-29 9 views
24

la mia app riceve una notifica remota dal server Apple.Rimuovere una singola notifica remota dal Centro notifiche

C'è un modo per rimuovere una singola notifica remota dal centro notifiche (il menu a discesa disponibile da iOs 5.0+), quando l'utente tocca su di esso?

enter image description here

Grazie!

+0

Le notifiche push (ciò che si ottiene dai server Apple) e NSNotificationCenter sono due cose diverse ... puoi spiegare un po 'più chiaramente che cosa stai cercando di fare? – jmstone617

+1

Grazie per la risposta. Mi riferivo al menu a discesa con le notifiche all'interno (disponibile da iOS 5.0+) – MaTTP

+0

Non hai ancora risposto alla mia domanda. Prima di tutto, le notifiche locali e le notifiche push vengono visualizzate in N.C. In secondo luogo, cosa intendi con la rimozione di una singola notifica? Vuoi rimuoverlo senza che l'utente tocchi la X? O quando toccano la X, vuoi rimuovere una sola notifica rispetto a tutta la tua app? – jmstone617

risposta

27

Non esiste alcun modo per rimuovere una notifica specifica a partire da iOS SDK 5.0. Il modo per rimuovere tutte le notifiche dalla tua app in modo che non mostrano nel Centro di notifica quando l'utente apre l'applicazione da uno di loro, è quello di impostare il badge app a 0, in questo modo:

[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 

MODIFICA: su iOS 8, SpringBoard sembra chiudere automaticamente una notifica quando viene toccata sul Centro di notifica per aprire l'app.

+1

È davvero un limite ... ma grazie! : D – MaTTP

+0

Non riesco a farlo funzionare. L'ho letto anche in un'altra risposta. è cambiato? –

+0

Ho dovuto aggiungere [[UIApplication sharedApplication] cancelAllLocalNotifications]; per farlo funzionare. –

2

Quando si chiama il metodo: [application cancelAllLocalNotifications]; all'interno dei metodi AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

e

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

Tutte le notifiche locali e push verranno rimosse su quella per l'app specifica.

+2

Cosa fare se non si desidera annullare le notifiche locali pianificate .. .? Questo metodo ha un effetto collaterale diverso, non è una soluzione al problema proposto. –

+0

per favore non usare questo metodo, specialmente se hai programmato notifiche locali per altri scopi diversi –

+0

Ho appena provato questo su iOS 10, e AFAICT non ha rimosso la notifica remota, solo le notifiche locali (che ha senso dato il nome di la funzione, heh) – user435779

8

Ecco un suggerimento, anche se ha i suoi difetti, e non ho provato io stesso:

  • Spingere una notifica silenziosa (contentAvailable: vero), non includere un "alert" all'interno push, posizionare il testo di avviso in una proprietà personalizzata del push
  • Gestire il push in arrivo e attivare una notifica locale, visualizzarlo immediatamente
  • Se l'utente fa clic sulla notifica locale, utilizzare [UIApplication cancelLocalNotification:] che dovrebbe rimuovere la notifica dal centro di notifica.
+2

Non sarà possibile creare una notifica locale nel caso in cui l'app venga uccisa. – Puneet

+0

Si noti inoltre che una notifica silenziosa (ovvero nessun avviso all'interno della pressione) significa che si è forzati in modalità priorità bassa. Se hai bisogno di consegna tempestiva, questa soluzione non funziona. – user435779

Problemi correlati