何时应该使用GCM设备组与主题?

7
我正在考虑将Google云消息传递(Google Cloud Messaging)纳入我的应用程序中。我想发送消息到与用户关联的所有设备。起初,似乎GCM的设备组消息是可行的方式。但这需要在我的服务器上管理注册ID和通知密钥。使用GCM的主题消息可能更容易,其中主题基于一些共享的用户信息,如用户ID。
我打算使用GCM向Android和iOS应用程序发送数据。我将发送后台的“内容可用”消息(使用Apple推送通知术语)和用户可见通知。
如果有的话,设备组消息相对于主题消息有哪些优势?

1
设备组是针对较小规模的,一个设备组可以有20个设备,一个使用案例是向特定朋友圈发送消息。但每个主题可以有1M个订阅者,一个使用案例是体育迷从比赛中接收通知。 - ztan
3
对我来说这并不重要,因为我不预计会有超过20个设备的用户。实际上,我可能只会发布到1-5个设备,因此设备组或主题都足够。如果选择主题而不是设备组,我是否会失去任何东西?由于没有额外状态,主题要简单得多。 - Joe Shaw
2
对于设备组,您可以在服务器中使用HTTP请求轻松添加或删除设备。但是对于主题消息,订阅和取消订阅方法是在客户端实现的,因此您的用户必须在客户端执行订阅/取消订阅操作。 - ztan
2
我建议使用主题而不是设备组,因为您无需在服务器端管理成员列表,也不必担心设备令牌是否有效。请注意,目前每个应用程序的主题限制为100万个订阅者,而不是每个主题,但似乎这个限制不会影响您。 - Arthur Thompson
@zten Instance-Id API 允许在服务器端添加和删除设备,如果您拥有注册令牌。 - kirtan403
2个回答

2
我认为下面的第一点是唯一有所区别的事情。

https://firebase.google.com/docs/cloud-messaging/android/topic-messaging

主题消息的优化目标是吞吐量而非延迟。如果需要快速、安全地向单个设备或小组设备传递消息,请将消息定位到注册令牌,而不是主题。如果您需要向每个用户的多个设备发送消息,请考虑使用设备组消息。

1

GCM(Google Cloud Messaging)现在被称为FCM(Firebase Cloud Messaging)。

  • 对于设备群组,允许通知的最大设备数量是20。这适用于向属于同一人的iPhone和两台iPad发送WhatsApp通知,也可能是一个家庭订阅的应用程序。
  • 理论上,一个主题可以有无限数量的订阅设备。主要限制是用户设备上的一个应用程序最多只能订阅2000个主题。一个很好的例子是(https://firebase.blog/posts/2023/05/cloud-messaging-world-cup-scale)2022年FIFA世界杯和每场比赛一个主题。主题数量没有限制,所以可以是每个城市一个主题的天气预报。

关于@ztan的重要观点更新:对于设备组和主题,都可以订阅和取消订阅设备。主要区别在于主题消息是公开的,任何人都可以订阅并查看。通过设备组,可以向特定设备私密发送消息。

如果需要直接向单个设备或一批设备发送消息,可以使用直接私密消息私密多播消息,其限制比设备组更高,每次请求可发送500条消息,并且可以逐批发送多个批次。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接