smack创建会话,收发消息

概述

点击联系人列表中的好友,跳转到聊天界面ChatActivity

①使用软件包org.jivesoftware.smack.chat2里的ChatManage类

软件包org.jivesoftware.smack.chat已过时。里面的createChat,addChatListener方法也不推荐使用

smack创建会话,收发消息

 

 ②相关函数

在chat2包的ChatManage类有以下方法:

 Modifier and Type  Method  描述(翻译) Description(原文)
 boolean  addIncomingListener?(IncomingChatMessageListener listener)  为接收会话消息添加一个监听器 Add a new listener for incoming chat messages.
 boolean  addOutgoingListener?(OutgoingChatMessageListener listener)  为发送会话消息添加一个监听器 Add a new listener for outgoing chat messages.
 Chat
chatWith?(EntityBareJid jid)  与jid开始一个新的会话或者回复已有会话 Start a new or retrieve the existing chat with jid.
 static ChatManager  getInstanceFor?(XMPPConnection connection)  获得ChatManage的一个实例  
 boolean  removeIncomingListener?(IncomingChatMessageListener listener)  移除一个接收会话消息监听器 Remove an incoming chat message listener.
 boolean  removeOutgoingListener?(OutgoingChatMessageListener listener)  移除一个发送会话消息监听器 Remove an outgoing chat message listener.
 void  setXhmtlImEnabled?(boolean xhtmlIm)  通知包含XHTML-IM的消息 Also notify about messages containing XHTML-IM.
 
我们可以对照上面表格中的函数来创建会话和收发消息

③简单的创建会话和收发消息代码

获得实例:
chatManage= ChatManager.getInstanceFor(conn)

监听和发送消息

//接收消息监听,发送消息
        //貌似监听代码要写在发送消息代码之前
        chatManage!!.addIncomingListener(object:IncomingChatMessageListener{
            override fun newIncomingMessage(from: EntityBareJid?, message: Message?, chat: Chat?) {
                println("from:$from")
                println("message:$message")
                println("message:${message!!.body}")
                println("chat:$chat")
            }

        })

        var jidStr=XmppStringUtils.completeJidFrom(friendName,conn!!.xmppServiceDomain.domain)
        //println("JidStr是:$jidStr")
        //与好友开启一个会话
        var chat:Chat=chatManage!!.chatWith(JidCreate.entityBareFrom(jidStr))
        //尝试发送一条消息
        chat.send("~~~hello~~~my~~dear~friend")

        var msg: Message = Message()
        msg.body="a message"
        chat.send(msg)

运行:

smack创建会话,收发消息

 

这里我只是点击跳转到聊天界面就自动发两条消息。

④后续

聊天界面优化。大概就是一个ListView或其他控件,适配条目分为接收到的消息和发出去的消息,一个在左,一个在有。在监听到发出去消息,和收到消息的时候,更新适配的数据就行了~

 

 

smack创建会话,收发消息

上一篇:在 Web 层应用程序中使用Spring


下一篇:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(26)-权限管理系统-分配角色给用户