在android中创建聊天应用程序的最佳做法是什么

我打算创建一个 Android聊天应用程序.实际上聊天将成为应用程序的一项功能.我想知道有关Android聊天应用程序的最佳实践.我熟悉的两个选项是C2MD,每隔几秒就会对服务器db进行一次自定义轮询.

现在,我知道C2MD本来应该是伟大的,但根据我的理解,它并不可靠.我试图实现它,它似乎没有工作.此外,如果由于某种原因谷歌结束时发生了某些事情(就像他们的服务器已关闭 – 不太可能但可能发生)我无法联系他们,并且他们处于他们的时间框架.

现在,如果我做自己的事情(我发送用户创建的消息的基本方法,然后定期检查服务器以查看是否有任何新消息到达)似乎没问题,除非为了获得良好的用户体验,我的我的服务器轮询必须像5秒左右一样,这就像疯了一样咀嚼电池.这是使用这种方法的主要缺点.

所以,我想知道有一个更好的方法,我不知道.请任何帮助,架构结构,任何有用的东西.

解决方法

你应该看一下使用XMPP.你可以在Android XMPP上搜索StackOverflow,你最终可能会推荐使用某些Smack(一个XMPP客户端库)的变种 here.

更新以发表评论

首先,XMPP是一种协议,而不是客户端或服务器.使用它的一个好处是可以广泛使用XMPP客户端和服务器实现. Wikipedia article解决了大部分问题.

关于你对gtalk的评论

The architecture of the XMPP network is similar to email; anyone can run their own XMPP server and there is no central master server.

关于民意调查:

XMPP Could use HTTP in two ways: polling[21] and binding.[22] The polling method,Now deprecated,essentially implies messages stored on a server-side database are being fetched (and posted) regularly by an XMPP client by way of HTTP ‘GET’ and ‘POST’ requests. With HTTP binding,the client uses longer-lived HTTP connections to receive messages as soon as they are sent. This push model of notification is more efficient than polling,where many of the polls return no new data.

它也可以使用WebSockets.

关于.NET集成(如果你需要它…如果你不需要,你可以运行自己的XMPP服务器),你可以只搜索StackOverflow for XMPP和.NET,你可以得到一些关于.NET服务器的问题/想法与XMPP服务器集成,如此问题:Opensource .Net Jabber/XMPP server?

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...