2012-08-23 2 views
5

Sto lavorando su un'app di chat in Android utilizzando c2dm (gcm). Ogni messaggio ricevuto solleva una notifica se la mia app non è in grado di mostrarlo direttamente. Il problema è quando l'utente è fuori dalla rete, nel qual caso i messaggi di c2dm si accumulano e vengono consegnati tutti in una volta quando torna in linea. Una cacaphony di suoni di notifica è il risultato dell'aggiunta di tutte le notifiche in un periodo di 1 secondo. Come prevenire questo? comportamento desiderato è una che il suono di notifica viene riprodotto una volta, mentre il tickertext e contenuti di notifica siano aggiornati con l'ultimo messaggio ricevutoPrevenire più suoni di notifica android

risposta

5

Ho finito per utilizzare un allarme che è stato impostato 1 secondo nel futuro. Ho impostato più allarmi con lo stesso intento, quelli precedenti vengono automaticamente cancellati. Quindi, quando arriva un secondo nell'intervallo di 1 secondo, cancella il primo.

0

Utilizzare la collapse_key per elaborare solo l'ultima "notifica" della pila

Per maggiori informazioni, vedi https://developers.google.com/cloud-messaging/concept-options#collapsible_and_non-collapsible_messages

+0

Questa non è un'opzione per me perché utilizzo i messaggi con payload (vale a dire non solo che è disponibile un nuovo messaggio di chat, ma anche il corpo del testo). Quindi, se un messaggio viene compresso, viene perso dal mio cliente. Se GCM aggiungesse un flag che indica che un messaggio inviato in precedenza è stato eliminato, potrei contattare il server e fare una sincronizzazione. Ma AFAIK non c'è modo di dire se un messaggio è stato collassato. –