通知栏+推送通知说明

时间:2013-05-22 07:35:08

标签: android android-intent notifications push-notification google-cloud-messaging

在我的应用中,我正在应用推送通知并使用notificationCompat类进行推送。

我正在为每个通知分配一个唯一的ID,因此,每个通知都会在通知栏中单独显示。

当用户点击通知时,使用待处理的意图,我将用户指向某个活动,在那里他可以看到之前的所有通知。 (我从mysql db中读取它们。)

问题1: 如果用户只点击其中一个,我希望状态栏中的所有通知都被清除。可以是任意随机的(鉴于它来自我的应用程序)。 setAutoCancel()方法,只删除按下的那个,我似乎无法知道我将在哪里实现cancelAll()方法。

答案:

@Override
protected void onResume()
{
    super.onResume();
    NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.cancelAll();
}

问题2: 由于每个通知都有唯一ID,因此从单个应用发送多个通知,并且如果未向用户进行检查,可能会产生多个图标出现在通知栏中。 Android开始收集它们并在它们开始占用太多空间时显示徽章编号,系统意识到它们没有足够的空间。 是否有任何方法可以从一开始就将它们组合在一起?也就是说,每当我发送通知并且没有选中时,应该添加第二个,并且单个图标应该出现在数字为2或+的栏上,无论系统使用什么。

1 个答案:

答案 0 :(得分:1)

我想将问题1和2合并为一个答案:不要显示多个通知!当您有多个未经检查的通知时,显示一个通知并进行更新。作为一个用户,如果我的通知栏被单个应用程序的通知垃圾邮件,我会非常恼火。想想GMail应用程序,如果你每收到一封电子邮件就会收到通知。

在4.1之前的设备上,您必须使用Normal View。如果您只有一条未经检查的消息,则可以立即在通知中显示消息的内容,如果您有多个消息,则可以执行类似GMail通知的操作,并显示“5未经检查的消息”。

在4.1+设备上,您可以使用Big View一次显示所有这些设备。