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

  • 相关阅读:
    sublime3 常用插件
    sublime3 常用快捷键
    博客园--头部昵称特效展示代码
    自定义jquery公用方法切换当前tab栏
    mysql计数器表的设计
    xargs命令
    java 常用命令
    python3 安装pip3
    数据库的范式和反范式
    git常用命令
  • 原文地址:https://www.cnblogs.com/gwm123/p/4395802.html
Copyright © 2011-2022 走看看