【发布时间】:2013-05-22 07:35:07
【问题描述】:
在我的应用程序中,我正在应用推送通知并使用 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:onResume 在您正在显示的活动中,或在您的应用程序中的每个活动中。问题2:我不知道任何现有的简单方法可以做到这一点,我是通过我自己的数据库手动跟踪来做到的。
-
@ChorWaiChun 谢谢。我用答案更新了我的问题,请看一下。关于第二个问题,您正在检查每个用户是否检查了通知或没有并计数?我没听懂你。
-
我的应用程序是基于聊天环境的,每条消息我都会在数据库中更新它们的已读和未读状态。因此,我将根据表格中未读的数量填充徽章编号。
-
您确实应该回复/接受/赞成您认为有帮助的答案和 cmets
标签: android android-intent notifications push-notification google-cloud-messaging