我正在使用 asmack 为 Android 开发一个聊天应用程序。连接正在建立,我也可以登录。我已经为 IQ 数据包添加了侦听器,并且工作正常。我还为 Presence 数据包添加了监听器,这是我的代码:
PacketTypeFilter presenceFilter=new PacketTypeFilter(Presence.class);
connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
Presence presence = (Presence)packet;
Log.d("test1","Presence packet came :From:"+presence.getFrom()+",Packet ID:"+presence.getPacketID()+",Priority:"+presence.getPriority()+",To:"+presence.getTo()
+",Exn:"+presence.toXML());
if (presence.getType() == Presence.Type.available) {
Log.d("test1","User available");
}
else if (presence.getType() == Presence.Type.unavailable) {
Log.d("test1","User not available");
}
}
}, presenceFilter);
我的问题是,这个监听器永远不会被任何传入的 Presence 数据包调用。它适用于外向的人。我不能使用名册来处理存在,因为我们的服务器正在使用一些智能路由服务来处理用户可用性。我在这里做错什么了吗?任何输入都会有所帮助。