2013-05-15 15 views
5

Zajmuję się tworzeniem aplikacji czatu dla systemu Android przy użyciu asmack. Połączenie jest już ustalone i mogę się również zalogować. Dodałem detektor dla pakietów IQ i to działa dobrze. Dodałem słuchacza dla pakietów obecność także tutaj jest mój kod:Detektor obecności nie działa w systemie 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); 

Mój problem jest, to słuchacz nigdy nie uzyskiwanie nazywa wszelkich przychodzących pakietów obecności. Działa dla wychodzących. Nie mogę używać Roster do obsługi obecności, ponieważ nasz serwer używa jakiejś Inteligentnej usługi routingu do obsługi dostępności użytkownika. Czy robię coś złego tutaj? Pomocne będzie każde wejście.

Odpowiedz

-2

Jeśli nie możesz skorzystać ze spisu, czy jesteś pewien, że do tego klienta jest wysyłana jakakolwiek obecność?

Czy użytkownik, z którym klient jest zalogowany, jest na liście innych użytkowników w sieci?

Czy przetestowano jawnie wysyłanie pakietu obecności do klienta za pomocą klienta, w którym można edytować surowy xml?

Powiązane problemy