2013-08-23 17 views
5

Vorrei consentire al numero di badge di aumentare automaticamente quando si ricevono le notifiche push, ad esempio: se ricevo due notifiche, il numero viene visualizzato come 2, se ricevo di più, il numero il numero aumenta. E voglio lasciare che il numero ritorna zero quando apro l'applicazione. Quindi quello che sto facendo è la seguente: il codice in applicazione ha terminato il lancionumero di badge di incremento automatico durante la ricezione di notifiche push da APNS

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

in caso contrario, il codice ha ricevuto notifica remota è

application.applicationIconBadgeNumber = [[apsInfo objectForKey:@"badge"] integerValue];

Nel server, in il file php:

$payload = '{"aps": {"alert":"'.$message.'", "sound":"default","badge":"+1"}}'; 

Ma, purtroppo, il numero non viene incrementato, correggimi se il codice sopra è sbagliato, grazie per anticipo.

risposta

3

Non c'è un'opzione nelle notifiche push per incrementare automaticamente il numero di badge. Dovrai passare il numero che verrà mostrato sul badge.

Anche il application:didReceiveRemoteNotification: verrà chiamato solo se l'app è in esecuzione in primo piano. Qui puoi calcolare il nuovo numero di badge, ma questo non ti aiuterà se l'app non è in primo piano.

È necessario tenere traccia anche del lato del numero del badge.

+1

sì, lo so non esiste alcuna opzione, che è quello che sto chiedendo? come posso farlo, puoi dirmi come posso rintracciare il numero del badge lato server? per favore – Fatima

+0

Dovrai effettuare chiamate API per il tuo servizio web, che l'app può chiamare. Come fare questo dipende da te e dal modo in cui hai impostato il tuo database. L'app dovrà comunicare al server quali messaggi ha letto e sarà necessario conteggiare il numero di messaggi non letti per l'utente. – rckoenes

+1

@Fatima poiché non abbiamo idea di come viene impostato il database o di come i dati che ci sono non possiamo risolvere il problema per voi. Posso scrivere un sacco di codice per risolvere il problema, ma poi mi chiederai come integrarlo con il tuo sistema. Inoltre siamo qui per aiutare ma non scrivere codice per te. – rckoenes

1

si può fare qualcosa di simile in seguito

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

NSLog(@"userInfo:%@",userInfo); 

    badge_value+=[[[userInfo objectForKey:@"aps"] objectForKey:@"badge"]intValue];<br> 
    NSLog(@"Totoal badge Value:%d",badge_value);<br> 

for (id key in userInfo) { 
    NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]); 
} 
[UIApplication sharedApplication].applicationIconBadgeNumber = badge_value;} 
+0

grazie, lo proverò entro lunedì, quindi ti darò un feedback. – Fatima

+0

cosa devo inserire invece di +1 in questa query: '$ payload = '{" aps ": {" alert ":"'. $ Message. '"," Sound ":" default "," badge ":" +1 "}}"; ' – Fatima

+3

non è necessario incrementare il badge nel codice php. È necessario incrementare il badge quando viene ricevuta la normalizzazione e cancellare il badge quando viene letto. Gestisci badge sul lato ios. – wasim