关于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,群主会在看到以后对大家提出的问题作出回复。欢迎浏览

原文地址:https://www.cnblogs.com/gwm123/p/4395802.html