Sto sviluppando un'applicazione di chat per Android che utilizza asmack. La connessione si sta consolidando e sono anche in grado di effettuare il login. Ho aggiunto listener per i pacchetti IQ e funziona perfettamente. Ho aggiunto ascoltatore per i pacchetti di presenza anche, qui è il mio codice:L'ascoltatore di presenza non funziona in caso di smarrimento
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);
Il mio problema è, questo listener non è mai sempre chiamato da qualsiasi pacchetto di presenza in ingresso. Funziona per quelli in uscita. Non riesco a utilizzare il servizio Gestione per la presenza poiché il nostro server utilizza un Servizio di routing intelligente per la gestione della disponibilità degli utenti. Sto facendo qualcosa di sbagliato qui? Qualsiasi input sarà utile.