【发布时间】:2013-04-16 09:33:43
【问题描述】:
我正在开发一个使用 Google Cloud Messaging 使用推送通知来通知 android 应用程序的项目。我已经用 PHP 实现了应用程序服务器。当我运行 android 应用程序时,设备从 GCM 服务器获取注册 ID,并将注册 ID 发送到 PHP 服务器(应用程序服务器)。但我从服务器得到以下 httpresponse :
{
"multicast_id": 7015234441922271670,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [{
"message_id": "0:1344007383866721%2adac3a0ad8b3148"
}]
}
但消息未传递到设备。请有任何建议。
如果有人遇到上述问题,请在下面查看它可能对您有帮助
我终于找到了解决方案在服务器端,只要应用程序运行良好,一切都应该正常工作。但是,如果应用程序中的错误触发同一设备的多个注册,则可能很难协调状态,并且您最终可能会收到重复的消息。
GCM 提供了一种称为“规范注册 ID”的工具,可以轻松地从这些情况中恢复。规范注册 ID 定义为您的应用程序请求的最后一次注册的 ID。这是服务器在向设备发送消息时应使用的 ID。
如果稍后您尝试使用不同的注册 ID 发送消息,GCM 将照常处理请求,但它会在响应的 registration_id 字段中包含规范注册 ID。请务必使用此规范 ID 替换存储在您服务器中的注册 ID,因为最终您使用的 ID 将停止工作。
【问题讨论】:
-
看我的回答这可能会有所帮助stackoverflow.com/questions/14017176/…
-
来自gcm guide 注意:“如果您的组织有防火墙限制进出 Internet 的流量,您需要将其配置为允许与 GCM 连接,以便您的 Android 设备接收消息. 要打开的端口是:5228、5229 和 5230。GCM 通常只使用 5228,但有时会使用 5229 和 5230。GCM 不提供特定 IP,因此您应该允许防火墙接受来自所有 IP 地址的传入连接包含在 Google 的 ASN 15169 中列出的 IP 块中。”检查您的防火墙。
-
以前可以用,现在不行了怎么办?
-
禁用防火墙。您提到它已经起作用,请确保消息仍然相同,并且您在 canonical_id 上没有收到任何其他数字,该字段上的数字表示设备具有多个注册 ID,您应该更新您的数据库和将未来的消息发送到该号码。
-
我的应用没有收到任何通知,我收到了我的帖子请求的响应:{"multicast_id":6870303680709824663,"success":1,"failure":0,"canonical_ids":0, "results":[{"message_id":"0:1354074200871681%978fee92f9fd7ecd"}]} 可能是什么问题?我检查了一切没关系
标签: android