Android 如何显示累计推送通知,而不是同时显示多个通知?

Android 如何显示累计推送通知,而不是同时显示多个通知?,android,ios,ruby-on-rails,push-notification,delayed-job,Android,Ios,Ruby On Rails,Push Notification,Delayed Job,每当添加新事件时,都会向用户发送推送通知。如果在行中添加了十个事件,则会向用户发送十个推送通知,这是一种令人讨厌的行为 我希望它是这样的:如果在一行中添加十个事件,或者在时间方面彼此非常接近,则只会向每个用户发送一个推送通知,并说:“#{event.name}和19个添加的符合您兴趣的其他事件。” 以下是我迄今为止所做的工作: 在users表中添加了一个字段last\u sent\u notification。每次添加新事件时,都会检查所创建的事件是否不在上次发送通知的2分钟半径内,并触发通知

每当添加新事件时,都会向用户发送推送通知。如果在行中添加了十个事件,则会向用户发送十个推送通知,这是一种令人讨厌的行为

我希望它是这样的:如果在一行中添加十个事件,或者在时间方面彼此非常接近,则只会向每个用户发送一个推送通知,并说:
“#{event.name}和19个添加的符合您兴趣的其他事件。”

以下是我迄今为止所做的工作:

users
表中添加了一个字段
last\u sent\u notification
。每次添加新事件时,都会检查所创建的事件是否不在上次发送通知的2分钟半径内,并触发通知

如果新创建的事件位于上次发送的通知的2分钟范围内,则会创建一个后台作业,该作业将为任何其他即将发生的事件等待2分钟,并在2分钟后触发。如果在2分钟等待期间创建了新事件,则通知将考虑在该2分钟等待期间创建的所有事件

此问题的唯一缺点是:添加事件后,不会立即发送通知。将有2分钟的延迟


是否有任何设计模式或最佳解决方案可以更好地完成这项工作?

它会让您使用起来简单得多,这是专为此类场景设计的

可折叠邮件是可以由新邮件替换的邮件 包含相同折叠键(如果尚未传递)的消息 连接到设备

您只需设置
collapse\u键
参数

如果这不是您真正想要的,那么您需要的是队列和发送机制。使用redis可以很容易地完成这类事情。您当前的服务器端应用程序仅在redis队列上推送GCM通知。如果给定用户已经有一条消息,它将被替换


然后,您需要另一个线程不断监视redis队列并发送超过n分钟的消息。

只需按照文档进行操作:@NicolasSimon这是服务器端所必需的。那么您最终决定了什么?是服务器相关的还是客户端相关的?Arsan ali。只需将一行代码添加到GCM发送器,即服务器appI浏览该文档的位置。这不是我想要的。上面写的内容:它将向用户发送所有通知,但如果所有早期通知共享相同的
collapse\u key
,则只有最新的通知才会显示在用户的手机上。我想要的是一个组合效果通知。
collapse\u键
场景非常适合体育运动,在这种情况下,用户需要使用最新分数进行更新。用户不在乎30秒前的分数是多少;他关心的是:最近的分数是多少。