谷歌云消息:registration_ids 与设备组

Posted

技术标签:

【中文标题】谷歌云消息:registration_ids 与设备组【英文标题】:Google cloud messaging: registration_ids vs. device group 【发布时间】:2016-04-03 12:23:44 【问题描述】:

我应该什么时候更喜欢向device group 发送消息而不是注册 ID 列表 (a message with registration_ids parameter)?

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

提前致谢!

【问题讨论】:

【参考方案1】:

Registration_idsDevice Group 可能很棘手,并且可以根据开发人员的选择使用。根据这个guide使用注册ID发送消息:

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

对于Device Group:

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

基于此发送带有 register_ID 列表的单个消息是一种更直接的方法、简单的编码和更少的密钥管理复杂性。虽然设备组处理复杂的注册设备列表(单个用户在服务器中注册了多个设备),但使用设备组会更合理。

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

【讨论】:

为什么选择为具有多个设备的单个用户使用设备组是基本选择?与注册 ID 列表相比有什么好处?无论如何,注册 ID 都在应用服务器上保存和管理【参考方案2】:

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

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

更少的微处理:我确实相信,当用户卸载或获取其设备的新令牌 ID 时,设备组将自动调整为不再发送到该设备。因此,如果用户卸载应用程序,您无需更新该 ID 列表即可删除其令牌。不过,您仍然需要从主服务器数据库中删除。

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

当然,这些是非常具体的用例,但我相信根据您想使用的应用类型,您可以通过通知同步做更多事情。

【讨论】:

以上是关于谷歌云消息:registration_ids 与设备组的主要内容,如果未能解决你的问题,请参考以下文章

GCM 问题(谷歌云消息)

谷歌云消息沙盒

监控谷歌云消息服务

腾讯云与谷歌云达成合作?产品思维转变亦是王道!

Android:谷歌云消息传递错误

谷歌云消息业务设置