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

use*_*049 8 android chat

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

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

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

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

kab*_*uko 8

你应该看一下使用XMPP.你可以搜索StackOverflow for Android XMPP,你可能会在这里建议使用Smack的一些变体(一个XMPP客户端库).

更新以解决评论:

首先,XMPP是一种协议,而不是客户端或服务器.使用它的一个好处是可以广泛使用XMPP客户端和服务器实现.在维基百科的文章解决了您的问题最多.

关于你对gtalk的评论:

XMPP网络的架构类似于电子邮件; 任何人都可以运行自己的XMPP服务器,并且没有中央主服务器.

关于民意调查:

XMPP可以通过两种方式使用HTTP:轮询[21]和绑定.[22] 现在不推荐使用的轮询方法实质上意味着XMPP客户端通过HTTP'GET'和'POST'请求定期提取(和发布)存储在服务器端数据库上的消息.通过HTTP绑定,客户端使用寿命更长的HTTP连接,以便在发送消息后立即接收消息.这种通知推送模型比轮询更有效,其中许多轮询没有返回新数据.

它也可以使用WebSockets.

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