我正在尝试创建聊天应用程序。通信基于RESTful Web服务(Jersey)。客户端与发送HTTP请求的服务器通信。我的问题是如何在没有客户端首先发送请求的情况下将消息从服务器发送到客户端。我读到了有关C2DM通知的信息,我想用这种方式,当客户端从服务器收到通知时(客户端)必须向服务器发送请求才能接收数据。我也在考虑使用套接字,但我不知道是否可以使用Rest。我的意思是在服务器端,我还可以使用REST代码的套接字(在较低级别运行的套接字)吗?我唯一可以使用套接字工作的是创建另一个带套接字的服务器(两个服务器RESTful和socket),但这是一个很好的解决方案吗?我也可以在客户端放置一些服务器代码,在服务器端放置一些客户端代码。这是正确有效的吗?你怎么看?哪种解决方案最好?
答案 0 :(得分:5)
C2DM已于2012年6月26日由谷歌正式弃用。鼓励现有C2DM开发人员迁移到新版本的C2DM,称为Google Cloud Messaging for Android(GCM)。
查看此链接以获取更多信息
答案 1 :(得分:1)
您描述的场景听起来非常适合C2DM。如果您构建自己的套接字设置,您将耗尽电池和CPU资源执行手机已经在做的事情 - 维护一个打开的套接字来接收消息。
C2DM的设置相对简单,而且根据我的经验非常可靠。
这是我见过的最好的教程:
http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html
但你还需要阅读官方文档:
http://code.google.com/android/c2dm/
您的服务器端代码需要向C2DM服务器发送HTTP请求以向设备发送消息。要告诉它在哪里发送消息,您的服务器需要指定注册ID(代表您在一个特定设备上运行的应用程序),因此当您的应用程序在Android设备上设置时,它会向C2DM注册,然后需要发送它的C2DM注册ID将存储到您的服务器,准备用于发送消息。