在带有 HTTP 服务器(不是 CCS/XMPP)的 Android GCM 应用中接收消息

Posted

技术标签:

【中文标题】在带有 HTTP 服务器(不是 CCS/XMPP)的 Android GCM 应用中接收消息【英文标题】:Receiving Messages in an Android GCM app, with a HTTP server (not CCS/XMPP) 【发布时间】:2014-02-28 16:13:22 【问题描述】:

我搜索了互联网,但找不到任何人尝试从 HTTP 服务器使用 GCM 设置推送消息的示例。我在http://developer.android.com/google/gcm/client.html 阅读了Google 的示例,看起来当应用程序调用gcm.send() 时触发了BrodcastReceiver 的onReceive() 方法。所以我的问题是,如果我不调用 gcm.send()(因为这是我正在使用的 HTTP 服务器),onReceive() 是如何触发的?

【问题讨论】:

您的服务器上会有一个网页。这可以托管 php 或 JSP 页面。用户将使用此类页面上的文本字段和提交按钮来发送消息。 我在这里发布了一个类似问题的答案:***.com/questions/21902217/… 我问的是客户端(Android 应用程序端)的事情。服务器上的一切都应该没问题,但我不明白应用程序如何接收消息,因为我在网上找到的每个示例都是针对 CCS 而不是 HTTP 服务器通信。 客户端只知道它的接收者是由来自谷歌服务器的消息触发的。您的服务器如何将消息发送到 Google 服务器与客户端无关。 【参考方案1】:

您可以简单地忽略演示中调用gcm.send() 的客户端代码。该演示演示了设备到云和云到设备的消息传递。它触发客户端中的通信,客户端通过 GCM CCS 向服务器发送消息,服务器又将相同的消息发送回应用程序。

如果您不使用 GCM CCS,请从客户端代码中删除 gcm.send() 部分。您的服务器通过 HTTP 请求向 GCM 发送消息。 GCM 服务器将消息传递到您的设备并触发您的广播接收器的onReceive 方法。

【讨论】:

以上是关于在带有 HTTP 服务器(不是 CCS/XMPP)的 Android GCM 应用中接收消息的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将 GCM 云连接服务器 (XMPP) 与 Heroku 应用程序一起使用?

在带有协议升级的 nginx 反向代理后面运行 daphne 总是路由到 http 而不是 websocket

Angular $http.post:无法将带有数据的对象发送到服务器。数据作为字符串起作用,作为对象 - 不是

带有 TypeScript 错误的 Angular HTTP GET http.get(...).map 不是 [null] 中的函数

带有 libevent 的多线程 HTTP 服务器

带有 http.createServer 的服务器和在节点 js 中使用 express 的服务器之间的区别