[英]Google Cloud Messaging send notification to all devices
我是GCM的新手。 我想向所有安装了该应用的设备发送消息。 我读到了registration_id:在第一次连接到GCM后,谷歌将这个唯一的字符串发送给设备。 我是服务器世界的初学者,但如果我没有弄错,在服务器端,为了向设备发送通知,我必须发送registration_id数组和google的消息。
谷歌知道注册号码是怎么回事? 有没有办法在没有通过注册号码的情况下向所有设备发送消息? 谢谢。
使用GCM 3.0,现在可以通过主题支持向所有设备发送通知。 应用程序必须包含一个或多个主题,服务器可以向该主题发送通知,而无需指定单个设备。
https://developers.google.com/cloud-messaging/topic-messaging
您可以将所有设备设置为名为“global”的主题,然后将消息发送到“/ topics / global”,而不是将它们发送到所有registration_ids。
有没有办法在没有通过注册号码的情况下向所有设备发送消息?
没门。
在GCM上成功注册后,您(Android应用程序)应将注册ID发送到您的应用程序服务器并将其存储在某个地方,例如数据库中。 此注册ID将用于向特定设备发送通知。
要向所有设备发送通知,则意味着从该数据库中选择所有注册ID,如您所述,将它们放入数组并将它们进一步传递给GCM。
更新:借助Firebase云消息传递,现在可以使用https://firebase.google.com/docs/cloud-messaging/android/topic-messaging在不明确指定注册ID的情况下发送通知。
您需要发送设备的reg id列表,并且此列表不应超过1000这是GCM的限制,如果您要向1000多个设备发送消息,那么您需要以1000块的形式打破列表。
是的,有办法向所有人发送消息!
只需在'to'字段中输入'/ topics / global'值,而不是在'registration_ids'字段中输入id。
例如在php中:
'to' => "/topics/global",
而不是这个:
'registration_ids' => $this->devices
创建notification_key
,通过将特定组映射到该组的所有关联注册令牌来标识设备组(您可以在应用服务器上创建通知密钥)。 用notification_key
,而不是在一次发送一个消息给一个登记令牌,该应用服务器可以发送一个消息给notification_key
,和GCM然后将该消息发送到所有的组的注册标记。
另请注意,notification_key允许的最大成员数为20 。
Google Dev网站特别为此主题添加了新指南。 https://developers.google.com/cloud-messaging/notifications#sending_downstream_messages_to_device_group
我觉得这里有一个混乱。 我曾使用github示例代码(例如,部署到Tomcat的Java中的app服务器)和Android应用程序。 在那里,我没有“通过”或“发送”任何注册ID到应用服务器。 它调用相关API来检索注册ID并使用它们发送通知。 为什么每个关于GCM注册ID的帖子都说需要将注册ID传递给第三方应用服务器? 我恐怕不同意。 我认为第三方应用服务器可以查询GCM服务器本身,以找出哪些设备已注册接收来自特定发件人的通知(发件人ID)。 必须手动将注册ID传递给第三方应用服务器,才能实现自动化流程的全部目的。 也许我在这里遗漏了一些东西,或者我正在使用已弃用的内容。 无论如何,一旦启动,自动化流程如何才能涉及人工干预?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.