2013-05-15 8 views
5

Ich entwickle eine Chat-Anwendung für Android mit Asmack. Die Verbindung wird aufgebaut und ich kann mich auch anmelden. Ich habe Listener für IQ-Pakete hinzugefügt, und das funktioniert gut. Ich habe für Presence-Pakete hinzugefügt Zuhörer auch, hier ist mein Code:Presence Listener funktioniert nicht in asmack

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); 

Mein Problem ist, wird dieser Zuhörer nie für alle eingehenden Presence-Pakete genannt zu werden. Es funktioniert für ausgehende. Ich kann Roster nicht für die Anwesenheitsverwaltung verwenden, da unser Server einen Intelligent Routing Service für die Handhabung der Benutzerverfügbarkeit verwendet. Mache ich hier etwas falsch? Jede Eingabe ist hilfreich.

Antwort

-2

Wenn Sie den Dienstplan nicht verwenden können, sind Sie sicher, dass überhaupt Anwesenheit an diesen Client gesendet wird?

Ist der Benutzer, mit dem der Client angemeldet ist, in der Liste anderer Benutzer im Netzwerk enthalten?

Haben Sie explizit das Senden eines Anwesenheitspakets an den Client mit einem Client getestet, in dem Sie das rohe XML bearbeiten können?