2012-08-23 19 views
5

Pracuję nad aplikacją do czatu w Androidzie przy użyciu c2dm (gcm). Każda otrzymana wiadomość wywołuje powiadomienie, jeśli moja aplikacja nie może jej bezpośrednio wyświetlić. Problem polega na tym, że użytkownik jest poza siecią, w którym to przypadku komunikaty c2dm gromadzą się i dostarczają wszystkie naraz, gdy jest on ponownie podłączony do sieci. Kafta dźwięków powiadomień jest wynikiem dodawania wszystkich powiadomień w okresie 1 sekundy. Jak temu zapobiec? Pożądane zachowanie jest, że dźwięk powiadomienia grał raz, natomiast tickertext i treść powiadomienia są na bieżąco z ostatniej otrzymanej wiadomościZapobieganie wielu dźwiękom powiadomienia Android

Odpowiedz

5

Skończyło się na użyciu alarmu, który został ustawiony 1 sekundę w przyszłości. Ustawiam kilka alarmów z tym samym zamiarem, wcześniejsze zostaną automatycznie usunięte. Więc kiedy drugi wchodzi w 1 sekundę, usuwa pierwszy.

0

Wykorzystaj collapse_key aby przetwarzać tylko ostatni „powiadomienie” stosu

Dla więcej informacji, zobacz https://developers.google.com/cloud-messaging/concept-options#collapsible_and_non-collapsible_messages

+0

Nie jest to opcja dla mnie, ponieważ używam wiadomości z ładunkiem (tzn. Nie tylko, że dostępna jest nowa wiadomość na czacie, ale także treść). Więc jeśli jedna wiadomość jest zwinięta, jest ona pomijana przez mojego klienta. Jeśli GCM doda flagę wskazującą, że poprzednio wysłana wiadomość została usunięta, mógłbym skontaktować się z serwerem i zsynchronizować. Ale AFAIK nie ma mowy o tym, żeby wiadomość była zawalona. –

Powiązane problemy