让我们说我想创建一个像WhatsApp或Viber这样的消息应用程序。要发送消息,必须将消息从用户A传输到服务器,然后从服务器传输到用户B. 问题是,用户B怎么知道服务器上有他的新消息? 一种解决方案是每秒检查服务器是否有新消息;但是这种解决方案会导致性能问题。
这个问题的最佳解决方案是什么? 如何将数据从Web服务器发送到Android应用程序而无需定期检查服务器?
我将非常感谢有关我需要使用哪些类或技术和/或某些示例代码的一些线索。 先谢谢大家。
答案 0 :(得分:0)
是的,定期检查,或者"轮询"您的后端并不理想,原因很多,包括电池使用率高,带宽使用率高以及后端资源使用率高。
"将数据发送到移动应用的名称"是"推送通知"。
在Android上,该平台内置了对Google Cloud Messaging(GCM)的支持,可以为您处理所有低级别的通信。设置完成所需要的是向Google注册您的应用以获取GCM" API令牌"然后该应用获得"设备ID"从手机上将它交给你的网络服务器或其他后端。当您的后端想要发送推送时,它会与Google联系并传递设备ID和消息。 Google会将消息转发到手机,您的应用可以在手机上收听消息并采取一些措施。
有关官方报道,请参阅Google Cloud Messaging website。您可以找到有关如何修改应用程序(客户端)的示例,以便它可以监听推送,以及如何编写Web服务器以便将推送发送到应用程序。
GCM非常快,所以即使性能是您的首要任务,它也是一个不错的选择。根据我的经验,在我从后端发送请求后,可以立即可靠地接收推送。请注意,GCM无法保证通过,具体取决于许多因素。将它视为一个很好的功能,而不是整个设计所依赖的核心组件:)
哦,它是免费的。
答案 1 :(得分:0)
使用Pubnub api成功并且消息传递时间少于1/4秒