关于AppFromwork集成XMPP开发的使用详解
Android 强大的开发支持库组件AppFromwork框架详解
下载地址:http://pan.baidu.com/s/1bbeOI
各位浏览的朋友,如需转载,请注明出处,否者封锁下载地址
AppFromwork是一款带有多方支持的App通用开发组件,可以更快的开发android应用程序,AppFromwork能帮你解决很多在开发中出现的问题,也可以大大的提高你的开发速率,也可以支持你二次开发一款属于自己的通用App开发集成组件。
上一篇我们说到了一些其他的特性,这次我们来做重点说一下XMPP即时通讯的开发,
先看一下框架提供的XMPP开发支持:
先说一下,这些类是如何协同工作的吧, :
客户端通过XmppManager类发送连接请求到服务器。框架返回连接的结果在XMPPListener监听器中,连接的结果不同会调用不同的连接方法。当成功连接后,客户端又去发送一条登陆请求,登陆是否成功又会返回到XMPPListener监听器中,当用户登陆成功后,通过Messagemanager发送一条聊天信息给某个用户时,客户端接收到消息时回调XMPPListener的processMessage()方法,获取对方回复给您的信息以及消息内容。显示到屏幕上,完成即时通讯开发。
下面我就逐个介绍每个关键点的一些方法和如何使用该套框架完成XMPP的相关的开发。
1.连接服务器的方法:
1 manager.setXmppHost("192.168.2.111"); //设置服务器的IP地址 2 manager.setXmppPort(5222); //设置服务器的端口 3 manager.setListener(new MyXmppListener()); //设置监听, 4 manager.connection(); //连接方法
大家一看就明白,只要把服务器的IP地址和端口号设置好。就可以调用connection()方法实现连接。监听器一定要设置在连接方法之前。当连接成功后会回调XMPP连接监听的一下方法
1 public void onConnSuccess(); //连接成功 2 public void onConnError(); //连接失败
2.用户登陆:
1 manager.setUsername(""); //设置用户名 2 manager.setPassword(""); //设置密码 3 manager.setServiceName("");//设置服务器名称 4 manager.login(); //登陆
在登陆之前需要设置用户名、密码、服务器名称属性,设置好以后调用login()方法完成登陆请求.登陆的结果XmppListener会根据不同的结果回调不同的方法。
1 public void onLoginSuccess(String username, String password); //当登陆成功后 2 public void onLoginError(String username, String password) ; //当登陆失败后
3.创建好友及分组信息
RosterManager manager = RosterManager.getInstance(); //获取好友管理器名称 manager.createGroup("haha"); //创建分组信息. manager.addFriend("lsq","刘斯奇", "haha"); //添加好友到组中
参数说明:
manager.createGroup("haha"); 方法内传的是组的名称
manager.addFriend(user,name, groupName); user: 对方的用户名。 name:对方的名称 groupName:组名
当好友收到您的添加请求后,处理了您的添加请求,添加是否成功会回调XMPPListener类中:
/** * 每当您与服务器通讯时都会回调该方法,可用于检验数据包和处理服务器返回的数据,处理好友请求等 * @param packet 与服务器通讯的数据包 */ public void interceptPacket(Packet packet){ System.out.println(packet.toXML()); }
至于你如何判断对方是否已经同意你的添加请求,那是XMPP协议的事情,我在此就不多说了,XMPP会根据不同结果返回不同的信息,我只把信息获取到并返回到该监听器的相应的方法中。
4.发送聊天信息。
发送聊天信息分为以下几个步骤完成。
1.用ChatMessage类把你要发送的信息封装好,调用相应的构造方法构造一条聊天信息,该类支持文本、表情、图片、文件、语音等消息。
2.利用MessageManager类创建聊天器,并把聊天信息发送出去
3.对方在接收到你的聊天内容时会回调XMPPListener的processMessage()处理聊天信息
下面我就对每个步骤说明一下:
4.1.用ChatMessage类把你要发送的信息封装好,调用相应的构造方法构造一条聊天信息,该类支持文本、表情、图片、文件、语音等消息。
打开该类我们就可以看到以下四个构造方法:
1 public ChatMessage(Integer resId) //构造一条表情 2 public ChatMessage(byte[] bytes, String type,String format) //构造一条图片、文件信息 3 public ChatMessage(String path,String format) //构造一条语音信息
4 public ChatMessage(String content) //构造一条文本信息
至于相关的参数说明,我已陆续写到该类的注释中。
4.2.利用MessageManager类创建聊天器,并把聊天信息发送出去
创建聊天器:
public void createChat(String to)
参数说明: to:和你聊天的对方的用户名
发送消息:
public void sendMessage(ChatMessage message)
参数说明: message:已经用ChatMessage封装好的聊天信息。
4.3 接收对方回复的消息
通过观察MessageManager的有关代码得知:
1 private final class MyMessageListener implements MessageListener{ 2 @Override 3 public void processMessage(Chat chat, 4 org.jivesoftware.smack.packet.Message msg) { 5 System.out.println(msg.toXML()); 6 ChatMessage message = ChatMessage.fromJson(msg.getBody()); 7 if(listener != null) 8 listener.processMessage(chat,msg,message); 9 } 10 }
当对方回复消息时会回调监听器的processMessage()方法。处理对方回复的信息,
有关该套框架的说明:该套框架对聊天信息进行了JSON封装,由于底层是一堆字符串。所以不管你发送的什么信息都会转成字符串发送给对方,对方需要对字符串作出处理后在进行相关的逻辑处理,下面我就对于每一种消息进行一下说明:
文本消息 : 聊天内容------>JSON封装------>发送给另一个客户端
图片信息: 获取你要发送的图片的绝对路径----->通过ByteArrayOutputStream转换成byte[]--------->再将byte[]通过Base64编码成字符串--->JSON封装---->发送给另外一个客户端
表情信息: 获取表情资源库中该表情的ID信息--->将该ID信息通过String.valueOf()方法转成字符串----->JSON封装------>发送另一个客户端
语音信息/文件信息:同图片信息一样发送给另外一个客户端。
好了,该说的我也说完了,如果大家读完该篇文章,还是有不懂的地方。可以加QQ群:435850465,群主会在看到以后对大家提出的问题作出回复。欢迎浏览