2015-04-24 17 views
10

Con seguente codice ottengo (2) nell'icona distintivo subito dopo applicazione compilazione:aggiornamento del contatore distintivo a Swift

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    let installation = PFInstallation.currentInstallation() 
    installation.setDeviceTokenFromData(deviceToken) 
    installation.badge = 2 
    installation.saveInBackground() 
} 

ho provato la variante successiva: inizializzato un nuovo var badgeCount = 0 e più tardi:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    badgeCount++ 
    let installation = PFInstallation.currentInstallation() 
    installation.setDeviceTokenFromData(deviceToken) 
    installation.badge = badgeCount 
    installation.saveInBackground() 
} 

Ma quando ricevo nuove notifiche non si aggiorna a +1. Qualcuno sa come risolverlo?

risposta

11

Non aggiornerà il numero di badge con questo metodo a meno che l'app non sia effettivamente aperta. Se si desidera aggiornare il numero del badge dopo aver ricevuto una notifica, è necessario impostare la proprietà Badge della notifica push json sul numero desiderato.

Se tu, se invii un messaggio normale (non usando json), c'è un interruttore per incrementare il numero del badge, basta spuntarlo. Se stai usando JSON quindi utilizzare questo:

{ 
    "aps": { 
     "alert": "Test Push Notification", 
     "sound": "yourSound.aiff", 
     "Badge": "desiredNumber" 
    } 
} 

Si prega di notare, se non si desidera inviare questo dal server, è possibile anche inviare da un dispositivo all'altro utilizzando client spinta di Parse, entra nella tua impostazioni nell'app su Parse.com e abilitare "push client", è quindi possibile inviare il Json sopra al dispositivo di un altro utente.

+0

Come posso inviare dal server? Come posso sapere quante notifiche non sono state lette? –

+0

Sembra che tu stia usando parse.com giusto? Se tu, se stai inviando un messaggio normale (non usando figlio), c'è un interruttore per incrementare il numero del badge, basta spuntarlo. Se stai usando JSON quindi utilizzare questo: { "APS": { "alert": "Test push di notifica", "suono": "yourSound.aiff", "Badge": "numberYouNeed" } – Swinny89

+0

No, io uso Pase.com. Puoi dirmi come si fa? Incremento il valore del badge –

8

Ogni volta che il codice è compilato mostra l'icona del badge che è stata precedentemente memorizzata nella tua app. Se non imposti l'icona del badge = 0 nella tua app mostrerà il numero dell'icona del badge nella tua app ogni volta che lo compili o lo inserisci in background.

Ora per il vostro problema, utilizzare l'icona distintivo come

var badgeCount = 0 

UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount 

anche ogni volta che si è fatto con il vostro compito fare badge icona come 0 altrimenti mostrerà un'icona distintivo nella vostra applicazione

UIApplication.sharedApplication().applicationIconBadgeNumber = 0 
+0

L'ho incollato all'interno di 'didRegisterForRemoteNotificationsWithDeviceToken' come:' let notif = UIApplication.sharedApplication() notif.applicationIconBadgeNumber = ++ badgesCount installation.saveInBackground() 'e ancora niente =/ –

+0

se non si fa l'icona del badge = 0 lo mostrerò sempre –

+0

Lo faccio uguale a 0 –

4

Ho lavorato su uno scenario simile e la soluzione finale che ho trovato per incrementare e ripristinare i numeri del badge.

Incremento Distintivo numero

  1. ho sempre salvare il conteggio numero di distintivo nella memoria (NSUserDefaults)
  2. Ogni volta che ho per impostare la notifica, ottengo il numero distintivo di incremento corrente e impostare il numero su .applicationIconBadgeNumber e aggiornare il conteggio in memoria.

reset Distintivo Numero

  1. Nel mio caso, devo resettare tutto il conteggio distintivo una volta che l'applicazione è aperta. Così ho impostato UIApplication.sharedApplication().applicationIconBadgeNumber = 0 in didFinishLaunchingWithOptions di AppDelegate. Inoltre resetto il conteggio in memoria.
+0

Puoi dare qualche codice completo in Sift 3+, grazie –

-1

Nessuna di queste risposte è più valida.

Devi essere guardando il tuo codice di spinta, non il tuo AppDelegate

Dalla documentazione Parse:

badge: (iOS/OS X only) 
the value indicated in the top right corner of the app icon. 
This can be set to a value or to Increment in order to increment the current value by 1. 
Problemi correlati