本人这阵子因为需求的原因,需要做一个android即时通讯软件,所以接下来分享我这阵子的开发心得。
这一章主要是搭建android通讯软件的服务器环境,并且体验自己开发的通讯软件的聊天功能。
首先,要了解开发所用的东西asmack+openfire+spark。
1、asmack
asmack是xmpp协议(这个协议可以通过百度百科了解http://baike.baidu.com/view/189676.htm?from_id=9344277&type=syn&fromtitle=xmpp%E5%8D%8F%E8%AE%AE&fr=aladdin)的实现包,里面提供了各种连接服务器、实现通讯功能(如添加好友、查找好友等)的接口,它主要就是包括一个asmack.jar包,在自己android项目加上这个包就行了,下载地址:http://pan.baidu.com/s/1hq1QkJU
2、openfire
openfire是我们要做的通讯软件主要的服务器,安装教程在网上有很多,这里提供一个地址:http://jingyan.baidu.com/article/ab69b270dcf2492ca7189fe4.html
实现上面地址的步骤之后,如果登录openfire服务器之后出现Login failed: make sure your username and password are correct and that you're an admin or moderator.的错误,
解决方案如下: 1.使用Mysql查看工具进入数据库,进入表“ofuser”,将该表清空,然后执行该SQL INSERT INTO ofUser (username, plainPassword, name, email, creationDate, modificationDate) VALUES ('admin', 'admin', 'Administrator', '[email protected]', '0', '0'); 2.关闭openfire服务,就是从其控制台stop然后再start,再用用户名:admin,密码:admin登录即可。这样的话我们以自己电脑作为服务器的目标就实现了。
3、spark
Spark是一个开源,跨平台IM客户端。它的特性支持集组聊天,电话集成和强大安全性能。就是说,它已经是一个完整聊天软件了,只要通过将它连接上自己的电脑服务器,就可以在同一个局域网内聊天了。这里或许有人会有疑问,这样的组合跟我们平常的聊天软件有什么区别。这里的区别就在于,我们所用的spark是开源的,然后服务器及数据库是在我们自己的电脑,我们可以自己在服务器和数据库修改用户数据。接下来是spark的登录问题:
用户名和密码与自己服务器数据库里面的ofuser表里面的数据匹配就行了,一般会默认有一个用户名:admin 密码:admin 初始数据。服务器就是自己安装有openfire电脑的ip,你可以通过在命令行输入ipconfig查看自己的ip。
接下来我们就要借助spark与android下的客户端进行聊天
这里我会提供一个网上开发好的android IM项目
导入完项目之后修改里面的一些参数,修改项目包下
里面有三个参数:
public static final String XMPPServerName = "schoolapp";
public static final String XMPPServerHost = "192.168.1.103";
public static final int XMPPServerPort = 5222;
将服务器名字改成你安装openfire时候用的名字,服务器地址改成安装openfire的电脑的ip地址,这里如果是局域网内,那只能局域网内进行聊天。端口号一般都默认5222,就不要更改了,这样的话,你用的电脑的android模拟器和spark就可以进行聊天了,或者你用两台同时连上这个局域网的手机也可以进行即时通讯了。