通知栏+推送通知说明

Posted

技术标签:

【中文标题】通知栏+推送通知说明【英文标题】:notification bar + push notification clarifications 【发布时间】: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 【参考方案1】:

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

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

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

【讨论】:

以上是关于通知栏+推送通知说明的主要内容,如果未能解决你的问题,请参考以下文章

从推送通知中获取错误

解析 Android 推送通知

Android - 我如何发送 GCM 推送通知,其中包含要加载哪个活动的说明?

iOS手机差距——推送通知不显示通知服务提示框

AdHoc 构建没有收到推送通知

注册无配额推送通知