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 向多个设备发送消息的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Android 谷歌云消息 (GCM) 的 Azure 移动服务从不向设备发送通知
在客户端上使用 SERVER_API 密钥是不是可以,是不是可以在不使用 SERVER_API 密钥的情况下向设备组发送 GCM 消息?