2016-04-03 98 views
4

何时我应该更喜欢通过注册ID列表(a message with registration_ids parameter)向device group发送消息?Google云消息传递:registration_ids与设备组

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

在此先感谢!

回答

0

Registration_idsDevice Group可能会很棘手,可以用于开发人员的选择。使用的注册ID发送消息根据本guide

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

对于Device Group

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

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

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

+2

为什么使用具有多个设备的单个用户的设备组是理由的选择?注册ID列表有什么好处?无论如何,注册ID都会在应用服务器上保存和管理 –

0

设备组主要用于拥有多个运行相同应用的设备的用户,因此全部属于同一个设备组。这些好处包括:

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

更少微操作:我相信,当用户卸载或获取其设备的新令牌ID时,设备组将自动调整为不再发送给该设备。因此,如果用户卸载应用程序,则不必更新该ID列表以删除其令牌。尽管如此,您仍然必须从主服务器数据库中删除。

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

当然,这些都是非常具体的用例,但我相信您可以通过通知同步完成更多操作,具体取决于您要使用的应用程序类型。