Как свернуть уведомления Android? - PullRequest
2 голосов
/ 18 сентября 2010

Я отправляю обновление C2DM в мое приложение Android каждые полчаса, которое создает уведомление.Проблема в том, что, когда я просыпаюсь утром, я получаю 15 уведомлений в очереди в строке состояния.

Как сохранить только последние уведомления, перезаписывая предыдущие?

Я попытался просмотреть документацию C2DM (http://code.google.com/android/c2dm/), в которой упоминается параметр collapse_key, но я не смогЯ не могу найти объяснения, как его использовать, и я не уверен, что решение лежит на стороне C2DM.

Спасибо!

Ответы [ 4 ]

5 голосов
/ 18 сентября 2010

Если вы хотите отменить любые предыдущие уведомления, которые были установлены в представлении, вы можете попробовать установить один из этих флагов.

PendingIntent.FLAG_CANCEL_CURRENT or  PendingIntent.FLAG_UPDATE_CURRENT 

Что-то вроде этого должно заменить ваше старое уведомление, я считаю

 NotificationManager mManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 Intent intent = new Intent(this,test.class);
 Notification notification = new Notification(R.drawable.icon, "Notify", System.currentTimeMillis());
 notification.setLatestEventInfo(this,"App Name","Description of the notification",
 PendingIntent.getActivity(this.getBaseContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT));
 mManager.notify(0, notification);
3 голосов
/ 18 сентября 2010

Notification имеет свойство с именем number, которое показывает небольшое число под значком (для множественного уведомления) Позволяет использовать один и тот же значок для множественных уведомлений.

Используйте тот же ID при обновлении вашего уведомления. :) ура.

1 голос
/ 18 марта 2011

В дополнение к другим ответам в вашем запросе C2DM есть параметр, который называется delay_while_idle. Удостоверьтесь, что вы НЕ включаете это или делаете это ложным. Ваш телефон находится в режиме ожидания, когда экран выключен (т.е. когда вы спите). Google ставит в очередь все ваши сообщения на сервере, пока телефон не бездействует (т.е. когда вы включаете экран утром). Затем Google отправляет все 15 сообщений одновременно, и вы отображаете их одновременно.

В источнике Chrome to Phone есть метод sendNoRetry с этой строкой:

if (delayWhileIdle) {
            postDataBuilder.append("&")
                .append(PARAM_DELAY_WHILE_IDLE).append("=1");
}

Убедитесь, что это не так, и серверы Google будут отправлять вам C2DM-сообщения каждые 30 минут, как и ожидалось.

0 голосов
/ 13 декабря 2016

collapse_id ключ должен сделать эту работу.Для обновления любого предыдущего уведомления просто используйте тот же ключ.Для создания нового уведомления на устройстве используйте другой ключ.

Например, * для уведомлений в чате используйте ключ "chat" (collapse_id = "chat") * * для приглашений используйте ключ "пригласить" (collapse_id= "Пригласить")

Таким образом, все уведомления unqiue collapse_id будут группироваться на устройстве.

Для более подробной информации посетите: https://documentation.onesignal.com/reference#create-notification

...