XMPP(二)-基于asmack+openfire的安卓客户端(仿QQ)的介绍以及个人心得

关于XMPP第一篇-openfire的搭建写完后,就一直在赶本篇所要介绍的这个基于asmack+openfire的安卓客户端,费了不少精力,因为有不少同学在还在焦急的等待着(自恋了呵呵),所以紧赶慢赶,现在算做出来了一个比较初级的版本,很多功能还不完善,不过先放出来,供大家一起参考研究,提出问题,共同学习,当然,该项目本人是会不断完善,增加新功能,甚至到后来的群组,有兴趣的话,大家可以继续关注^-^

好了,接下来介绍下本项目实现的功能吧:

1.注册;

2.登录;

3.依昵称查找人员;

4.添加好友(发送好友申请,对方接收好友请求,并同意,方可成为好友);

5.界面上的,包括最近联系人,好友列表等;

6.聊天:目前支持的类型有文本,图片,位置,动态表情等;(这里要说明下,在该初级版本,图片的路径和位置坐标是固定的);

7.退出;

8.免登录;(一次登录成功,则下次启动软件时自动登录);

界面:

界面上的部分功能此版本并未实现,以及一些细节的处理,代码上的优化等都会循序渐进的改进,并在以后的博客中发出。

接下来,杂谈模式开启,其实,纯这种为聊天而生的APP并不多,除了我们熟悉的QQ,微信等之外,其它的社交类应用基本都是将聊天这一块穿插进APP中,并且这种QQ式的添加好友等在现在的社交应用中也通常被改造为关注,被关注或者粉丝等,如比较知名的微博,陌陌等,不知名的那就多了去了。由于XMPP这块儿,互相聊天并不需要双方必须是好友关系,只需知道对方的JID即可收发消息,因此,许多应用也正是看中了这一点,来实现应用中的关注,粉丝等功能,而关注,取消关注,拉黑等功能是可以通过web服务实现的,而XMPP此时只充当了点对点的聊天功能,所以大家也不必纠结xmpp本身自带的邀请好友了,同意好友申请了,获取好友列表了等等,只需大致了解即可,重点是聊天过程的实现,以及客户端跟服务端连接的稳定性(如断线如何重连,XMPP自带的重连很不稳定)等等,当然,若有的同学钻研精神极强,或者公司有需求,那么你可以去深入研究了。

支持XMPP协议的服务端有不少,比较熟悉的就是openfire,而当一个项目真正决定使用openfire作为服务端时,想实现比较复杂点的功能的话或者是符合自己要求的功能,都需要去改造openfire,因为openfire有一定的局限性,但好在其是开源的,另外,一般的社交软件如果使用openfire的话,都是有两个服务端的,一个是自己的web服务端,一个就是openfire服务端,像好友头像,昵称,性别,年龄,地址,以及类似陌陌的照片墙等信息数据都是可通过web服务来存取的,只需web数据库跟of数据库的用户id对应起来即可,而只依靠openfire本身,这些资料的存取是无法实现的。做这个项目时,本打算将web和of结合起来,来实现更复杂更贴近实战的功能的,不过最后放弃了,应为这样工作量太大了,本人也没那么多精力和时间,呵呵!因此,如上说所,我们可以把精力主要集中在聊天,以及如何利用web上存储的大量信息来跟of结合起来,这才是重点!(--个人观点)

好了,现在我们来谈一下聊天过程中,如图片,语音,视频等信息如何通过xmpp传输,我也经常遇到有同学上来就问,xmpp怎么传语音啊,怎么传文件啊之类的(不过现在xmpp好像是支持文件传输了,具体没试过),其实,我们只要认真思考下,就能想到解决办法,xmpp传什么最快,传什么最简单?当然是字符串了!字符串中可以有什么?什么都可以有!因此,我们就可以将我们想要的信息都放进字符串中传输过去,对方收到消息后,解析之,便可得到一切你想要得到的东西,如本项目中,图片,以及位置消息的实现,就是将图片路径或者位置坐标跟接收者以及发送者的信息以某特定间隔符间隔并组装成一个字符串作为message的body发送过去(如:接收者*发送者*消息类型*消息内容*发送时间*。。。等等等),对方收到消息后以“*”拆分便可得到所有信息,岂不快哉?因此,对于图片语音视频等类型的信息,我们都只需要其路径即可,那么路径又怎么获得呢?就像我上面说的,配合web服务,现将图片语音等上传到web服务器获取上传成功后的路径(这个不难吧),然后将路径作为字符串发送给对方,对方接收到消息后按消息类型解析,并根据路径下载图片或语音。。。具体可参考本项目的实现过程!

嗯,先聊到这里吧,后面有时间会继续本博,本项目也会继续更新!

项目源码:http://download.csdn.net/detail/baiyuliang2013/8391863

注意:源码部署后,找到Consts.java中的XMPP_HOST,需要修改为自己的IP地址(of端名称最好与本机IP一致,具体可参看上篇文章--openfire的安装和搭建),另:该客户端是要服务端即openfire支持的,如果不安装of端是运行不起来的。

时间: 2024-08-08 05:19:06

XMPP(二)-基于asmack+openfire的安卓客户端(仿QQ)的介绍以及个人心得的相关文章

使用Openfire配置安卓客户端聊天服务器

Openfire是一种即时通信服务器,采用开放的XMPP协议,您可以使用各种支持XMPP协议的IM客户端软件登陆服务. Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.Openfire安装和使用都非常简单,并利用Web进行管理.单台服务器可支持上万并发用户. 我给大家共享一下我的安装配置过程. 1.下载Openfire3.9.3,http://www.igniterealtime.org/downloads/index.jsp 这里有两个下载方

docker集群(二)--portainer+TLS安全连接docker主机(详细介绍与使用心得)

http://blog.51cto.com/mysky0708/2298049承接上文,在生产中如何安全的链接docker主机呢?我们采用TLS秘钥方式.步骤:第一部分:首先在docker主机上生成秘钥,保存到指定地方:第二部分:在管理节点(portainer)上,指定上述秘钥,添加节点. 具体实施过程:第一部分代码如下 read -s PASSWORD //定义一个密码变量 read SERVER //注意主机名变量要与系统对应 cd /etc/docker //切换到生产密钥的目录 open

基于Jenkins + Ant + Tomcat 的安卓客户端可持续化构建及发布下载

一. Jenkins 可持续化构建环境请参考 文章 http://my.oschina.net/long0419/blog/183299 二. 基于搭好可持续构建环境完成基础上 ,使用Ant 来编写安卓持续化构建环境 (未使用gradle 原理一样) 1.首先要去官网下载ANT代码. ANT官网下载地址 2.下载ANT循环打包JAR包. ANT循环JAR包下载地址 网盘下载地址 3.解压得到其中的ant-contrib-1.0b3.jar文件待用. 做完以上3步,ANT多渠道打包所需要的软件就准

基于Bmob后台的AutoBank安卓客户端(实习最后两天)

前段时间完成了AutoBank的网站端 http://blog.csdn.net/jkxqj/article/details/42651295 昨天抽时间把老师要求的AutoBank安卓客户端做完了.听同学说Bmob对移动开发者很方便,于是试了一下,果然很好用. 客户端的源代码上传到CSDN的code仓库.https://code.csdn.net/acmjk/autobank_for_android/tree/master

TCP/IP网络编程之基于TCP的服务端/客户端(二)

回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服务端的I/O代码 echo_server.c --while ((str_len = read(clnt_sock, messag, 1024)) != 0) write(clnt_sock, messag, str_len);-- 接着,我们回顾客户端的代码 echo_client.c -- wr

Android即时通讯开发之XMPP (一)初识XMPP协议和asmack

在讲XMPP和asmck之前 ,我还是先分享一些资源文档,如果你有耐心,可以直接忽略我下面所写的.下面有关XMPP的介绍大部分是摘抄网上的文档,后面我会写一些基于XMPP协议和asmck开源库的聊天室开发,功能包括,文本,语音,和当前地理位置地址. XMPP官网:http://xmpp.org Smack开发官方指导文档:http://www.igniterealtime.org/builds/smack/dailybuilds/documentation/extensions/index.ht

一个基于Android系统的新闻客户端(一)

一.整体概述 在服务器端,通过对凤凰网的抓取存入数据库,客户端通过向服务器发送请求得到新闻. 服务端用WCF,宿主为window服务,客户端为Java写的安卓程序. 二.客户端 我在eclipse里新建了个Android项目,命名为MyNewClient,eclipse自动生成二个xml布局文件,如图: 其中,fragment_main.xml是新版的布局文件,暂时不会用,把它删掉. 新建xml文件,命名为activity_foot.xml,在这里我们要做app的底部,先上代码: <?xml v

Xmpp学习之Asmack取经-asmack入门(一)

1.XMPPConnection:它主要是用来创建一个跟XMPP服务端的Socket连接.它是与Jabber服务端的默认连接并且已经在RFC 3920中精确定义过了.示例如下: XMPPConnection connection=new XMPPConnection(configuration); connection.connect(); 2.ConnectionConfiguration:当我们要建立跟服务端的连接时通过它来进行一些配置一些连接参数.例如,你可以通过它来配置trustore文

基于asmack的聊天

现在的聊天模块的功能基本上很多项目都会用到,关于聊天的实现有些是原生的(native)的有些是基于第三方SDK的比如融云,环信等.原生的开发的难度和工作量会大一点但是灵活性和维护度简单点.第三方的即时通讯的优点是快速的集成和开发大大降低了开发的难度和时间的周期. 下面是基于Openfire+asmack实现的聊天属于原生的开发即时通讯吧.下个环节我会推出关于基于融云SDK的即时通信开发. 源码的下载,聊天是其中的一个模块在wechar包中其它的代码忽略就好了. 源码 下载 github 下载 环