批量 Firebase 云消息传递的限制

Posted

技术标签:

【中文标题】批量 Firebase 云消息传递的限制【英文标题】:Limit of Bulk Firebase Cloud Messaging 【发布时间】:2017-03-21 12:23:24 【问题描述】:

我们正在尝试向 8k 个不同的设备发送促销推送消息。我们正在成功响应推送通知 URL https://fcm.googleapis.com/fcm/send

但只有部分用户收到此通知,而不是全部。我试图在 Firebase documentation 上找到的 Firebase Cloud Messaging 发送批量推送是否有任何限制,但它没有写在任何地方。

我试图获取 Google 建议的确切限制,但无法定位到 Google 中提到限制的特定页面。

但是我找到了一个quora链接send more than 1000 push messages

【问题讨论】:

【参考方案1】:

根据this answer,FCM 的限制类似于 GCM。

来自GCM documentation:

...它必须包含至少 1 个且最多 1000 个注册令牌。

因此,您大概能够将每条消息发送到 1000 台设备。由于您的消息数量不受限制,您可以将同一条消息发送 8 次,发送到 8 个不同的列表。

【讨论】:

我有超过 10,000 个注册令牌,如何向每一个独特的设备发送相同的消息。请帮忙 @Neotrixs 将您的令牌分组到每个 1000 个令牌的列表中,并向每个列表发送一条新消息。 @NeriaNachum.. 你能指导我如何实现这个..? @AKHILMATHEW 具体实现取决于您的服务器端语言和框架,但核心解决方案是相同的:不是向所有收件人发送一条消息,而是将它们拆分为 1000 个列表(最多) 并向每个列表发送相同的消息。 @NeriaNachum。我正在使用 python 发送推送通知。我还有一个疑问。 Google 本身提供了称为设备组的令牌分组选项。有没有办法将批量推送发送到组令牌/ID 而不是多个注册表。令牌。【参考方案2】:

@NeriaNachum 的回答是指使用registration_ids 参数时向多个收件人发送消息的限制。来自FCM docs(我认为这是您要找的):

此参数指定多播消息的接收者,将消息发送到多个注册令牌。

该值应该是要向其发送多播消息的注册令牌数组。该数组必须包含至少 1 个且最多 1000 个注册令牌。要向单个设备发送消息,请使用 to 参数。

组播消息只允许使用 HTTP JSON 格式。

但是,如果您改用Topics Messaging,则没有限制。只需确保您要向其发送消息的每个用户都已正确订阅。如果您有自己的 App Server,则可以使用 Instance ID API 订阅多个令牌(请参阅我的回答 here)。

【讨论】:

【参考方案3】:

您一次只能将其发送给 500 个用户。 更好地在您的终端实施批处理。

https://firebase.google.com/docs/reference/admin/java/reference/com/google/firebase/messaging/MulticastMessage

【讨论】:

以上是关于批量 Firebase 云消息传递的限制的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 通知和云消息传递 [重复]

Web 应用程序中未收到 Firebase 云消息传递通知

Firebase 云消息传递消息日志

Firebase 云消息传递重复通知

Firebase 云消息传递 - 有多个主题 - 没有消息重复

Firebase 云消息传递通知图像定价