Presence听众不在asmack工作

时间:2013-05-15 05:25:41

标签: android xmpp smack asmack

我正在使用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数据包。它适用于外向的。 我无法使用Roster来处理状态,因为我们的服务器正在使用一些智能路由服务来处理用户可用性。 我在这里做错了吗?任何输入都会有所帮助。

1 个答案:

答案 0 :(得分:-2)

如果您不能使用名册,那么您确定首先会向该客户发送任何信息吗?

客户端是否已登录网络上其他用户的名单?

您是否已使用可编辑原始xml的客户端测试显式向客户端发送在线数据包?