GCM 向多个设备发送消息

Posted

技术标签:

【中文标题】GCM 向多个设备发送消息【英文标题】:GCM send message to multiply devices 【发布时间】:2014-06-20 16:42:49 【问题描述】:

作为使用 GCM 接口的一部分,服务器需要使用这种格式才能将消息发送到 GCM 服务器(将数据传递给设备):

headers =  'Content-Type' : 'application/json', 'Authorization': 'key=' + GCM_KEY 
values =  'registration_ids': [regId], 'data': 'msg': 'helo' 

其中:GCM_KEY 是我的服务器密钥,regId 是由“,”分隔的注册 ID 字符串。

假设用户 A 的注册 ID 为 1,用户 B 的注册 ID 为 2。

当我尝试仅向一个设备(例如用户 A)发送消息时,regId 等于字符串“1”并且消息正确传递。当我尝试仅将消息传递给用户 2 时,也会发生同样的情况。

但是当我尝试将消息发送到两个设备时,regId = '1,2',消息就不会通过(根据 GCM 文档,成功是响应包含 0 个失败和 0 个 canonical_ids,所以我得到的结果与成功的响应不同)。

有什么想法吗?

【问题讨论】:

【参考方案1】:

整个payload都是JSON,所以regId数组需要是JSON数组。而不是'1,2' 使用["1","2"]

【讨论】:

但是我将 regId 放在括号 [regId] 内的值中......所以它应该就像你说的那样。或者如果我错了,你能告诉我正确的方法吗? regId 是字符串或字符串数​​组。如果您将 regId 发送为[1,2],那是一个数字数组。仔细检查您发送到 GCM 的确切内容,并在 jsonlint.com 验证该 JSON。

以上是关于GCM 向多个设备发送消息的主要内容,如果未能解决你的问题,请参考以下文章

GCM 向多个客户端发送多条消息(数组)

适用于 Android 谷歌云消息 (GCM) 的 Azure 移动服务从不向设备发送通知

在客户端上使用 SERVER_API 密钥是不是可以,是不是可以在不使用 SERVER_API 密钥的情况下向设备组发送 GCM 消息?

一次向所有用户的设备发送消息的最佳方式是啥?

使用 GCM 发送推送消息时,错误代码“notRegistered”是啥意思?

在 Google Cloud Messaging 中向其他设备发送消息