Smack4.20实现接收离线消息与花名册操作(3)

因为工作的原因,一直没时间上来更新,趁现在闲的时候更新下:

上一节我们实现了点对点的单聊与监听单聊消息,这节我将会介绍下如何接收离线记录和花名册的操作。

首先这里要重点说明一下(博主在这里也是踩坑踩了好多天) ,当登陆成功后,如果直接设置了登陆状态为在线的话,是不能获取到离线记录的,离离线消息记录直接就没了!!!没了!!,所以我们要先获取完离线记录再设置为在线,代码如下:

public List<Message> getOfflineMessage() throws Exception{
        OfflineMessageManager offlineManager = new OfflineMessageManager(connection);
        //获取离线消息
        List<Message> messageList = offlineManager.getMessages();

        //特别说明,这条代码的意思是获取离线消息的数量,我也不知道为啥只有加了这句才可以真正删除离线记录,
        //否则就一直删不掉,老重复接收重复的离线消息记录
        offlineManager.getMessageCount();
        //获取后删除离线消息记录
        offlineManager.deleteMessages();

        //设置在线,只有设置了在线状态,才可以监听在线消息,否则监听都无效
        Presence presence = new Presence(Presence.Type.available);
        connection.sendStanza(presence);
        return messageList;
    }
返回的list就是离线message。

这里要注意一下,


接下来我就开始介绍下花名册的操作

花名册顾名思义,就是好友的意思,我们可以通过花名册获取好友的信息,获取花名册的代码如下:

private Roster friendRoster = null;

/**
     * 初始化花名册
     */
    public Roster getFriendRoster(){
        if(friendRoster == null){
            friendRoster = Roster.getInstanceFor(connection);
        }
        return friendRoster;
    }


    /**
     * 获取好友账号实体
     */
    public List<RosterEntry> getFriendEntity(){
        Set<RosterEntry> set = getFriendRoster().getEntries();
        List<RosterEntry> list = new ArrayList<RosterEntry>();
        list.addAll(set);
        return list;
    }
返回的list就是好友账号实体。

对于点对点单聊来说坑比较少,只要服务器不出问题基本上不会有什么问题。


下节就专门讲解群聊的一些操作,如创建群里、邀请以及发起消息、群消息监听、查看群员、退出群聊等...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值