Google Cloud Messaging会向所有设备发送通知

Ten*_*d93 9 notifications android google-cloud-messaging

我是GCM的新手.我想向所有安装了该应用的设备发送消息.我读到了registration_id:在第一次连接到GCM后,谷歌将这个唯一的字符串发送给设备.我是服务器世界的初学者,但如果我没有弄错,在服务器端,为了向设备发送通知,我必须发送registration_id数组和google的消息.

谷歌知道注册号码是怎么回事?有没有办法在没有通过注册号码的情况下向所有设备发送消息?谢谢.

小智 15

使用GCM 3.0,现在可以通过主题支持向所有设备发送通知.应用程序必须包含一个或多个主题,服务器可以向该主题发送通知,而无需指定单个设备.

https://developers.google.com/cloud-messaging/topic-messaging

您可以将所有设备设置为名为"global"的主题,然后将消息发送到"/ topics/global",而不是将它们发送到所有registration_ids.


And*_*Res 11

有没有办法在没有通过注册号码的情况下向所有设备发送消息?

没门.
在GCM上成功注册后,您(Android应用程序)应将注册ID发送到您的应用程序服务器并将其存储在某个地方,例如数据库中.此注册ID将用于向特定设备发送通知.

要向所有设备发送通知,则意味着从该数据库中选择所有注册ID,如您所述,将它们放入数组并将它们进一步传递给GCM.

更新:借助Firebase云消息传递,现在可以使用https://firebase.google.com/docs/cloud-messaging/android/topic-messaging在不明确指定注册ID的情况下发送通知.

  • 这不再是正确的答案.对Android推送基础架构的更新使得这个答案已经过时. (2认同)

小智 6

您需要发送设备的reg id列表,并且此列表不应超过1000这是GCM的限制,如果您要向1000多个设备发送消息,那么您需要以1000块的形式打破列表.


Mar*_*abo 6

是的,有办法向所有人发送消息!

只需在'to'字段中输入'/ topics/global'值,而不是在'registration_ids'字段中输入id.

例如在php中:

'to' => "/topics/global",
Run Code Online (Sandbox Code Playgroud)

而不是这个:

'registration_ids'  => $this->devices
Run Code Online (Sandbox Code Playgroud)