openfire+smack获取离线消息
ConnectionConfiguration connConfig = new ConnectionConfiguration("127.0.0.1");
//登录前先设置不发送在线状态,因offlineManager调用必须在用户状态为离线状态下获取,具体参照smack javadoc中的offlineManager类英文说明
connConfig.setSendPresence(false);
connection = new XMPPConnection(connConfig);
connection.connect();
OfflineMessageManager offlineManager = new OfflineMessageManager(sample.getConnection());
sample.login("test", "test");
//System.out.println(offlineManager.supportsFlexibleRetrieval()); //获取支持灵活的检索状态,正常应该是为true,个人理解为服务器的离线消息功能支持开关
System.out.println("离线消息数?: " + offlineManager.getMessageCount());
Iterator<Message> it = offlineManager.getMessages();
while (it.hasNext()) {
Message message = it.next();
System.out.println(message.getBody());
}
offlineManager.deleteMessages(); //上报服务器已获取,需删除服务器备份,不然下次登录会重新获取
Presence presence = new Presence(Presence.Type.available);//此时再上报用户状态
sample.getConnection().sendPacket(presence);