【问题标题】:GCM Messages not being received sometime有时未收到 GCM 消息
【发布时间】:2014-09-05 18:20:22
【问题描述】:

朋友,我正在使用聊天应用程序。在我的聊天应用程序中,我使用 GCM 进行推送通知。 GCM 在我的应用程序中运行良好。但并非所有时候我都无法收到 GCM 消息。有时我收到 GCM 消息,有时没有。为什么这样?我搜索了 GCM 消息失败,但没有找到正确的。

有人可以帮帮我吗?

【问题讨论】:

  • 如果您遇到任何错误,您会检查 GCM 发送的结果吗?请将代码粘贴到您验证 GCM 发送的结果的位置
  • 是的@pgratton 我检查 gcm 结果没有错误。

标签: google-cloud-messaging


【解决方案1】:

当您向 Google GCM 服务器(https://android.googleapis.com/gcm/send)发布消息时,您需要传递三个值:registration_id、collapse_key 和 data.message。 collapse_key 可能是您的问题。

确保为需要可靠传递的每条消息传递一个唯一的 collapse_key。如果您对每条消息使用相同的 collapse_key,那么 GCM 可能会丢弃多条同时发送的消息。

您可以在此处找到更多信息:http://developer.android.com/google/gcm/adv.html

【讨论】:

  • String postdata= "collapse_key=score_update&time_to_live=2419200&delay_while_idle=1&data.message=" + message + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + deviceToken + “”........这是我要发送的,可以吗。 Bcoz我也面临同样的问题。有时某些设备没有接收到
  • 在你的“score_update”折叠键上添加一个递增的数字,问题应该就解决了。
  • 我也收到了某人的回复,要求设置 delay_while_idle=0。是否需要。
  • 这将有助于提高交付性能,但不应影响可靠性。
  • 如果在服务器发送推送消息时设备处于离线状态。根据文档,当它再次在线时,它应该会收到所有待处理的通知。但在这种情况下我没有收到。当它处于活动状态或锁定/睡眠状态时。可能是什么原因。
【解决方案2】:

由于您没有提供有关您的情况的太多信息并且没有共享代码 sn-p,因此很难分析问题。但是,正如documentation 中所述,GCM 不保证交付或消息的顺序。

【讨论】:

  • 我从 C2DM 迁移到 GCM。我彻底测试了我的应用程序实际上工作正常。GCM 发送消息的机会有多大。
  • AFAIK,没有任何关于获得消息的机会的计算。这取决于谷歌。
  • 除了 GCM,您还可以使用一些服务,例如(urbanairship、netmera 等),但它们也使用与 GCM 类似的技术。或者您可以实现服务器端并从客户端拉取,但这将更难以处理每种情况。并且作为一个建议,使用推送服务进行聊天应用程序不是一个好的选择。
  • 其实我的应用是实时聊天应用。所以,我需要一个推送消息的服务。
【解决方案3】:

如果您通过任何防火墙(如“Cyber​​oam”或类似的东西)使用您的移动互联网,那么它会限制 GCM 推送通知的端口。尝试使用没有任何防火墙的直接互联网连接来实现它。这为我解决了问题。希望对你也有帮助。

GCM 需要打开端口号 5228、5229 和 5230。 GCM 通常使用 5228,但有时会使用可能受防火墙限制的 5229 和 5230。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多