【发布时间】:2012-07-07 06:30:36
【问题描述】:
我刚刚查看了新的 Google Cloud Messaging (GCM),我想知道是否可以在您的 Android 应用程序上使用 GCM 进行即时消息传递?
我看到您可以从服务器发送数据(例如消息),但也可以从一台设备发送到另一台设备吗? 这将如何运作? 一些示例代码会很有帮助..
Tnx!
【问题讨论】:
标签: android instant-messaging google-cloud-messaging
我刚刚查看了新的 Google Cloud Messaging (GCM),我想知道是否可以在您的 Android 应用程序上使用 GCM 进行即时消息传递?
我看到您可以从服务器发送数据(例如消息),但也可以从一台设备发送到另一台设备吗? 这将如何运作? 一些示例代码会很有帮助..
Tnx!
【问题讨论】:
标签: android instant-messaging google-cloud-messaging
Google Cloud Messaging for Android 上的official docs 确实提到 GCM 可用于开发即时消息应用程序。
...或者它可能是包含多达 4kb 有效负载数据的消息(所以 即时通讯等应用可以直接使用消息)。
所以我们继续使用 GCM 创建了一个即时消息应用程序。服务器端由 Google App Engine 提供支持。你可以在这里阅读完整的教程。 Create an Instant Messaging app using Google Cloud Messaging (GCM)
因此可以在 Android 上使用 GCM for Instant Messaging 来回答您的问题。但是,与用于 IM 的 XMPP 相比,GCM 的可靠性是另一个话题。
【讨论】:
只要我的两分钱:
我认为您不应该使用 GCM 来传递 IM。您应该有一个专用服务器,您的 Android IM 应用程序将使用持久套接字连接连接到该服务器。您的服务器将知道谁在线或不在线,因此可以向所有应用显示“在线列表”。
GCM 可以在用户离线或未运行您的应用时发挥作用。可以向他们发送 GCM 消息以指示“XXXX 想要聊天”。然后他们可以启动您的应用并自动连接到聊天会话。
Google 表示无法保证 GCM 消息的传递。仅凭这个原因依赖它们进行即时消息传递并不是一个好主意。
【讨论】:
试试 pub nub - 它很容易实现 - 将我从一部手机发送到另一部手机 - 只需在浏览器中启动网页(见链接),然后在电脑、手机之间聊天 - 并且可以使用“无服务器” '。代码适用于 javascript,但它们也有 java。 Chat app using jquerymobile web app framework
【讨论】:
您可能想查看服务器如何将消息发送到 GCM 服务。可以在服务器端使用 php,因此应该可以直接从您的应用程序中适应 POST 请求。但是,要进行通信,您需要注册要向其发送数据的设备的 ID。意味着您将需要一些东西来存储和获取它们。最好的解决方案是您自己的(网络)服务器,它存储所有 ID 并处理消息发送。
【讨论】: