Google云消息传递向所有设备发送通知

我是GCM的新手。 我想发送消息到所有的应用程序安装的设备。 我读了关于registration_id:第一次连接到GCM后,谷歌发送这个唯一的string设备。 我是服务器世界的初学者,但如果我没有弄错,在服务器端,发送通知设备,我必须发送数组registration_id和消息到谷歌。

Google知道注册ID有多less? 有没有办法发送消息到所有设备没有通过注册商ID? 谢谢。

有没有办法发送消息到所有设备没有通过注册商ID?

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

要发送通知给所有设备,就意味着要从该数据库中select所有的注册ID,如你所说,把它们放在一个数组中,并将它们传递给GCM。

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

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

您可以将所有设备适用于名为“全局”的主题,然后将该消息发送到“/ topics / global”,而不是将它们发送到所有registration_ids。

您需要发送设备注册ID列表,而且这个列表不应该超过1000,这是GCM的限制,如果你想发送消息到1000多个设备,那么你需要打破在1000块的列表。

是的,有一种方法可以发送消息给所有人!

只需在'to'字段中input'/ topics / global'值,而不是在'registration_ids'字段中inputid。

例如在PHP中:

'to' => "/topics/global", 

而不是这个:

 'registration_ids' => $this->devices 

创buildnotification_key ,通过将特定组映射到所有组的相关注册令牌来标识设备组(可以在应用服务器上创build通知密钥)。 使用notification_key ,应用服务器不会一次向一个注册令牌发送一条消息,而是可以向notification_key发送一条消息,然后GCM将该消息发送给所有组的注册令牌。

另请注意,允许通知密钥的最大成员数为20

Google Dev网站特别为此主题增加了一个新的指南。 https://developers.google.com/cloud-messaging/notifications#sending_downstream_messages_to_device_group

我认为这里有一个困惑。 我曾经使用过github示例代码(例如Java中的app服务器部署到Tomcat)和Android应用程序。 在那里,我没有“传递”或“发送”任何注册ID到应用服务器。 它调用相关的API来检索注册ID并使用它们发送通知。 为什么每个有关GCM注册ID的主题都说需要将注册ID传递给第三方应用服务器? 恐怕我不同意。 我认为第三方应用程序服务器可以查询GCM服务器本身,找出哪些设备已经注册接收来自特定发件人(发件人ID)的通知。 必须手动将注册ID传递给第三方应用程序服务器会使整个过程自动化。 也许我在这里失去了一些东西,或者我正在使用弃用的内容。 无论如何,一旦启动,自动化stream程如何涉及人工干预?