2009-12-21 20 views
23

Ho implementato il servizio push per la mia applicazione e ho pensato al badge dell'applicazione. La mia app è un'app di posta (sorta) e voglio avvisare l'utente tramite push per i nuovi messaggi aggiunti alla casella di posta, voglio il badge = numero di nuovi messaggi nella casella di posta.Distintivo di notifica push distintivo incremento

Ho pensato di farlo da lato server (fornitore) controllando i nuovi messaggi e inviando il numero come badge.

La domanda è: C'è un modo per incrementare automaticamente il badge dell'applicazione, senza dover calcolare il valore del badge lato server e successivamente inviarlo come parte del carico utile push all'APN?

Forse c'è un modo per inviare nel campo del badge JSON alcune variabili come "++" o qualcosa del genere. Qualche hack per quello? O devo andare con il sistema di conteggio lato server ??

+2

è auto-incremento ancora possibile? Sto creando un'app di chat chiamata [AcaniChat] (https://github.com/acani/AcaniChat). Come l'app Messaggi nativa di iPhone, il numero di badge è uguale al numero di nuovi messaggi (non letti) e ricevi una notifica push per ogni nuovo messaggio. Quindi, se fosse possibile l'auto-incremento, non avrei dovuto memorizzare il numero di badge di ogni token del dispositivo sul server. – ma11hew28

risposta

28

No, devi tenerne traccia sul lato server. Se non includi alcun valore per il badge, verrà rimosso completamente.

Ovviamente questo è solo se l'utente riceve la notifica e l'app non è in esecuzione/scelgono di non avviarla. Se l'utente avvia l'app o l'ha già avviata, puoi fare tutto ciò che vuoi in termini di incremento.

AGGIORNAMENTO Marzo 2014: Vedere i commenti per un possibile aggiornamento. Non ho fatto pressioni in diversi anni quindi non sono stato in grado di verificarlo da solo.

+0

Questo è quello che pensavo. Ho già pensato a un sistema, ma mi è venuto in mente che Apple potrebbe essere stata un po 'più intelligente questa volta - e ci ho pensato da soli. Grazie per averlo chiarito. – natanavra

+1

Perché non conservare il numero di badge nell'app memorizzandolo nella cache (ad esempio NSUserDefaults) – msk

+2

@MSK In che modo la manutenzione del numero di badge sul client risolve questo problema? Ad ogni modo, si può semplicemente fare '[UIApplication sharedApplication] .applicationIconBadgeNumber' se si desidera ottenere il numero del badge, non è necessario memorizzarlo nella cache in' NSUserDefaults'. – ma11hew28

1

È un po 'possibile ma c'è un compromesso.

È sempre possibile inviare il totale non letto come valore JSON aggiuntivo come parte del carico utile push (push ignora le chiavi che non comprende esplicitamente). Una volta che l'utente apre l'app, leggi il valore e regola il badge da te stesso tramite la proprietà applicationIconBadgeNumber di UIApplication.

Il problema con il fare in questo modo è che push aggiusta il valore del badge anche se l'utente non apre l'app (ad esempio quando riceve l'avviso e l'utente fa clic su "Annulla" invece di "Visualizza"). In questi casi il tuo badge non cambierà, ma non appena eseguiranno l'app (se visualizzeranno "View"), la tua app potrà impostarla correttamente.

+1

Non è davvero una risposta ... hai detto che posso aggiungerlo come payload di JSON, ma è qualcosa che posso già fare, intendevo - c'è un modo per incrementare automaticamente il badge ad ogni push ... La risposta , sembra - è no. Dovrò gestirlo sul server e quindi inviare un numero come aps => badge ... Ripristino del badge da solo ogni volta che l'utente accede all'applicazione e resettare il contatore sul server ogni volta che l'utente preleva i dati . Grazie comunque. – natanavra

+0

L'altro problema qui è che solo aggiornando il numero di badge dopo che l'utente ha visitato l'app, perdiamo l'opportunità di coinvolgere meno utenti attivi. – Zorayr

1

È possibile provare i servizi di backend App42 che forniscono l'incremento automatico del conteggio dei badge push che viene mantenuto sul lato server. Per maggiori dettagli è possibile seguire il link di blog. Ecco il blogpost conent:

Ecco alcuni casi di utilizzo che è possibile ottenere tramite il conteggio dei badge incrementale automatico in App42 Push Notification.

Per l'incremento automatico del badge di spinta di 1, è necessario inviare un messaggio push come mostrato di seguito.

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService(); // Initializing PushNotification Service. 
string userName = "UserName"; 
string message= "{'badge':'increment'}"; 
pushNotificationService.SendPushMessageToUser(userName,message, new UnityCallBack()) 

NB: Il campione è spiegato per l'unità/C#, ma lo stesso processo può essere applicato su altri.

Se si desidera stipulare un numero qualsiasi per il badge o si desidera ridurre a zero il numero di badge, è possibile utilizzare questo metodo per aggiornare il conteggio quando la notifica viene cliccata dall'utente. In questo caso devi chiamare updatePushBadgeforDevice o updatePushBadgeforUser.

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService(); // Initializing PushNotification Service. 
string userName = "UserName"; 
string deviceToken = "DeviceToken"; 
int badges = 10; // For clear count make it 0 
pushNotificationService.UpdatePushBadgeforDevice(userName, deviceToken, badges, new UnityCallBack()); 

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService(); // Initializing PushNotification Service. 
string userName = "UserName"; 
int badges = 10; // For clear count make it 0 
pushNotificationService.UpdatePushBadgeforUser(userName, badges, new UnityCallBack()); 

updatePushBadgeforDevice - Questo metodo viene utilizzato per aggiornare spinta conteggio distintivo di un particolare dispositivo registrato dall'utente.

updatePushBadgeforUser - Questo metodo viene utilizzato per aggiornare il numero di badge push di tutti i dispositivi che un utente procura. In questo caso, supponiamo che l'utente abbia più dispositivi registrati con il suo nome.

-10

Invia +1 per il conteggio distintivo, che si auto-incremento il numero di distintivo di 1.

+0

È qualcosa di nuovo nel protocollo APNS? L'hai provato tu stesso? – natanavra

+2

Questo non funziona affatto. Quando si imposta il badge su +1, la notifica non arriva nemmeno al dispositivo. –