谷歌云消息传递:registration_ids vs. 设备组

5

什么情况下应该选择发送消息到设备组而不是一系列的注册ID(带有registration_ids参数的消息)?

管理设备组似乎只会增加复杂性。对于设备组,应用服务器应包含何时创建组或仅添加注册ID的逻辑。服务器仍然需要在某个数据库中保存注册ID,并且现在还需要保存通知密钥。响应似乎不够详细:失败原因未指定,因此更难知道应该采取什么措施以防止失败(应用程序是否已卸载?注册令牌是否过期等)。
我错过了什么?有什么好处吗?

提前致谢!

2个回答

0

Registration_idsDevice Group可能会让开发者感到棘手,但可以根据开发者的选择使用。根据此指南发送使用注册ID的消息:

在这种情况下,“简单”意味着从应用程序服务器发送到设备上的客户端应用程序的消息,而不是通过主题或设备组路由消息。

对于设备组

通过设备组消息传递,应用程序服务器可以向属于组的多个设备上运行的应用程序实例发送单个消息。通常,“组”是指属于单个用户的一组不同设备。但是,组也可以表示一组设备,其中应用程序实例以高度相关的方式运行,例如安装了温度控制应用程序的手机、智能恒温器和自动窗户打开器。组中的所有设备共享一个公共通知密钥,该密钥是GCM用于向组中所有设备扇出消息的令牌。

基于这个想法,使用注册ID列表发送单个消息是一种更直接、编码简单、密钥管理复杂度较低的方法。而设备组则处理注册设备的复杂列表(在服务器上注册了多个设备的单个用户),使用设备组更为合理。

注意:请检查服务器是否能够处理这些消息类型的查询。


2
为什么对于一个拥有多个设备的单个用户,使用设备组是合理的选择?相比注册 ID 列表,有什么好处?无论如何,注册 ID 都会保存和管理在应用服务器上。 - M_G

0

设备组主要用于拥有多个运行相同应用程序的设备的用户,因此所有设备都属于同一设备组。其中一些好处包括:

通知同步:您可以实现一些很酷的功能,例如将通知同步在一起,例如当一个设备上的通知被取消时,同样的通知也会在其它设备上消失。或者当一个设备按下通知时,设备的详细信息、应用程序的状态、配置等可以发送到所有其他设备,也许其他设备可以相应地进行调整。

减少微观管理:我相信当用户卸载或获取新的令牌ID时,设备组将自动调整以不再向该设备发送通知。因此,如果用户卸载应用程序,您无需更新ID列表以删除其令牌。但是,您仍然需要从主服务器数据库中删除。

更容易区分:您可以使每个单独的用户,即使他们只有一个设备,都属于自己的设备组。这使得在选择要发送通知的不同用户时更容易,您不必挖掘用户并挖掘所有相关的ID,只需挖掘他们的通知密钥,FCM将处理其余部分。

当然,这些是相当特定的用例,但我相信根据您想要使用的应用程序类型,您可以做更多的通知同步。


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