2012-12-07 12 views
5

Sto lavorando alla notifica push in iphone. quando ricevo la notifica push, la sua visualizzazione 1 sulla mia icona dell'applicazione, la prossima volta è 2,3,4. se apro l'applicazione il suo 0. La prossima volta dovrebbe essere 1,2,3,4 ... ma mostra l'ultimo numero e +1. Voglio il badge di notifica push di reset dopo l'applicazione aperta. invierò +1 dal dirigibile urbano.Cancella il badge di notifica push dopo l'incremento

e non funziona per me.

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
+0

Si sta cancellando il numero del badge localmente. Devi anche cancellarlo dal server di Urban Airship. Non conosco il Dirigibile Urbano. Ma sono sicuro che ha un'API per resettare il badge di notifica sul server. – EmptyStack

+0

invio il numero di badge +1 per l'incremento nella mia api. –

risposta

0

Ho usato Urban Airship e ho avuto questo problema prima. Non stai mostrando il codice, ma suppongo che quando ricevi una notifica, stai impostando il numero del badge dell'applicazione su quale dirigibile urbano ti sta passando, non farlo. Lascia che sia l'applicazione a gestirlo automaticamente, quando arriva una notifica remota, lascia che aumenti automaticamente da solo. Se così non fosse, potrebbe essere che, sul lato del dirigibile urbano, stai impostando un numero di badge da inviare con la spinta. Non inviare un numero di badge con la notifica push, lasciare questa parte, iOS dovrebbe incrementare automaticamente il badge dal numero di badge corrente.

3

Io uso questo codice nel mio app perché la documentazione Urbano Dirigibile (UA) ha detto a

[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
[[UAPush shared] resetBadge]; 

ma non funziona, il badge sull'icona dell'app continua a incrementare. Ho visto alcuni post su questo tema nei forum di UA e non hanno dato una risposta chiara.

EDIT # 1:

Ho ricevuto la seguente risposta da un tecnico supporto a UA con i seguenti suggerimenti, che ha lavorato molto:

Che cosa si vuole fare, è assicurarsi che nella vostra didFinishLaunchingWithOptions: (*) NSDictionary launchOptions metodo, si stanno chiamando il seguente:

[[UAPush shared] setAutobadgeEnabled:YES]; 
[[UAPush shared] resetBadge];//zero badge on startup 

e anche chiamare [[UAPush shared] resetBadge]; nei seguenti metodi così:

applicationDidBecomeActive:(UIApplication *)application 

e

didReceiveRemoteNotification:(NSDictionary *)userInfo 

Il tecnico inoltre dicono che assegnando 0 a applicationIconBadgeNumber non è necessaria, così ho preso fuori. Funziona ancora magnificamente.

EDIT # 2:

ho finito per dover modificare applicazione: didReceiveRemoteNotification: per includere una chiamata al di UA handleNotification: applicationState: metodo:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    // Get application state for iOS4.x+ devices, otherwise assume active 
    UIApplicationState appState = UIApplicationStateActive; 
    if ([application respondsToSelector:@selector(applicationState)]) 
    { 
     appState = application.applicationState; 
    } 

    [[UAPush shared] handleNotification:userInfo applicationState:appState]; 
    [[UAPush shared] resetBadge]; 
} 

perché ero avendo un problema con il seguente scenario:

  1. utente è in app
  2. notifica push ricevuto
  3. cartellini è stata visualizzata sul icona dell'applicazione quando si ritorna alla schermata iniziale (come previsto)
  4. Un'altra notifica push ricevuto
  5. Distintivo visualizzato numero maggiore di 1

Con la modifica sopra, questo scenario viene gestito. Immagino tu debba dire a UA che la notifica viene gestita quando ne viene ricevuta una e l'app è in esecuzione in primo piano.

+0

Ho lo stesso problema. Ho provato i tuoi suggerimenti, ma non funziona per me. Potete per favore aiutarmi a risolverlo? Si prega di dare un'occhiata alla mia domanda qui: http://stackoverflow.com/questions/20073212/reset-urbanairship-badge-count –

+0

Non sono sicuro di quali altre informazioni posso aggiungere. Il codice che vedi sopra funziona per me. – Moebius