我一直在寻找这个问题的解决方案超过3天..:/
我正在使用xmpp - openfire服务器为Android制作聊天应用程序。我成功连接并登录到服务器,现在我可以通过我的应用程序与Spark聊天..
但是现在我必须在一对一聊天(历史记录)中获取最近的消息,我读到我必须使用插件并请求消息..我使用以下请求使用Monitoring Service Plugin和Open Archive Plugin:
<iq type='get' id='user1'>
<list xmlns='urn:xmpp:archive'
with='admin@localhost'>
<set xmlns='http://jabber.org/protocol/rsm'><max>30</max>
</set></list></iq>
我从android发送的那样:
Packet packet = new Packet() {
@Override
public String toXML() {
String xExtension = "<iq type='get' id='user1'>"+
"<list xmlns='urn:xmpp:archive'"+
" with='admin@localhost'>"+
"<set xmlns='http://jabber.org/protocol/rsm'><max>30</max></set></list></iq>";
return xExtension;
}
};
MainActivity.connection.sendPacket(packet);
和PackageListener:
PacketFilter filter = new PacketFilter() {
public boolean accept(Packet arg0) {
return true;
}
};
MainActivity.connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
if(packet.getClass() == Message.class ) {
Message message = (Message) packet;
final String body = message.getBody();
final String from = message.getFrom();
Log.d(TAG, "Got Message : " + body);
} else {
Log.d("Chat", "Packet: " + packet.getClass());
System.out.println("packet details : " + packet.toXML());
}
}
}, filter);
所以我得到的答案如下:
packet details : <iq id="user1" to="user2@localhost/Smack" type="result"></iq>
虽然我可以在Openfire管理控制台中看到它们,但为什么我不能进行聊天..? 任何帮助都会得到很好的赞赏..谢谢。