0

目前我正在开发SaaS,支持多个租户,可以为他们的用户群启用推送通知。 我正在考虑使用消息队列来存储所有推送并使用单独的服务发送它们。该新服务需要从队列中读取并发送推送通知。我们是否需要复杂的GCM/FCM发送策略?

我现在的问题是:我需要想出一个复杂的发送策略?我知道使用GCM每个请求最多有1000个设备,因此需要考虑这一点。我也不能等待x推进,因为这可能会延迟先前发送的推送。我的下一个想法是创建一个全局数组,并通过从队列中推入来填充它。然后循环会每隔1秒取出一个数组并发送推送。这种方式推送肯定会发送,我不会超过1000个设备的限制。

所以......虽然这可能工作,我不知道如果一个无限循环是最好的方式去。我想知道GCM/FCM是否有请求限制?如果不是的话,我不需要首先将推动力集中起来,我就可以放弃这个循环。我可以简单地为每个从队列中取出的推送发出请求。

对这个话题的任何启发或改进我的原型算法将是伟大的!

回答

1

我需要想出一个复杂的发送策略吗?

不是真的。 GCM/FCM非常简单。只需将消息发送到GCM/FCM服务器,然后将它自己排队,然后(根据行为)尽快发送。

我知道使用GCM每个请求有1000个设备的限制,所以这需要考虑。

我觉得你对每个请求限制的1000个设备感到困惑。 1000个设备限制是指使用registration_ids参数当在列表中添加注册的令牌的数量:接收多播消息

此参数指定的设备的列表(注册标记,或ID)。它必须包含至少1个和最多1000个注册令牌

这意味着您只能在单个请求中发送1000个具有相同消息负载的设备(如果需要,您可以执行批量请求(1000 /每个请求))。

我想知道GCM/FCM是否有请求限制?

AFAIK,没有这样的限制。沟环。只要您成功向GCM/FCM服务器发送消息,它就会排队并保留消息,直到消息可以发送。

+0

我的意思是每条消息注册令牌的限制!但知道没有请求限制是很好的。我认为有一些限制,以防止DOS发送推送时轰炸,因此我强制收集... – codepushr

+0

@codepushr有一个关于[节流](http:// stackoverflow。com/a/39658639/4625829)之前。但是,这是方式,waaay回来,并不再在官方文件中提及。所以我认为它已经被废弃了。干杯! –

相关问题