Smack4.20实现单聊通讯与监听(2)

来源:互联网 发布:我的贴身校花网络剧 编辑:程序博客网 时间:2024/05/22 11:33

上一篇我们已经粗略的说明了如何连接并且登陆进openfrie,现在开始了解下如何进行通信。

当我们登陆成功后,我们就可以对某个用户发起聊天,代码如下:

 public ChatManager getChatManager() {        if(chatManager == null){            chatManager = ChatManager.getInstanceFor(connection);        }        return chatManager;    }
首先,我们得通过connection获取chatManager管理单聊对象,然后:

public void sendChatMessage(String receive, String body) throws Exception {        //接收人jid        EntityBareJid jid = JidCreate.entityBareFrom(receive);        //获取聊天chat        Chat chat = getChatManageWindows(jid);        //创建消息对象,消息类型是Message.Type.chat         Message message = new Message(jid, Message.Type.chat);        message.setBody(body);        //发送消息        chat.send(message);    }
注意,这里的的参数receive是接收消息账号的jid,这里jid是每个用户都特有的账号,可以通过登陆openfire来查看每个账号的jid,jid有严格的格式要求,格式如下;
用户名@openfire服务器名称
然后就可以通过JidCreate类来创建jid对象。我这里body参数就是发送的内容,这样就可以发送一个单聊消息,可以通过spark客户端来测试。


单聊消息的监听可以通过实现官方提供的IncomingChatMessageListener监听器接口来监听消息,代码如下:

import android.util.Log;import org.jivesoftware.smack.chat2.Chat;import org.jivesoftware.smack.chat2.IncomingChatMessageListener;import org.jivesoftware.smack.packet.Message;import org.jxmpp.jid.EntityBareJid;/** * 接收消息监听器 * Created by ozy on 2017/4/11. */public class InChatMessageListener implements IncomingChatMessageListener {    @Override    public void newIncomingMessage(EntityBareJid from, Message message, Chat chat) {        //from就是消息的发送方的jid,message即发送的消息对象,chat也就是单聊对象        //获取from发送方的账号,转换成string即可        Log.d("text",from.toString());        //消息内容        Log.d("text",message.getBody());    }}
监听器绑定如下:

InChatMessageListener inListener = new InChatMessageListener(this);chatManager.addIncomingListener(inListener);
这样我们就可以实现一个简单的单聊应用,由于项目中结合了其他很多不相干的东西,所以只能抽取出来。
下节再来分享下接收离线消息以及好友花名册哈!


阅读全文
0 0
原创粉丝点击