Слушатель присутствия не работает в asmack

Я разрабатываю приложение для чата для Android, используя asmack. Соединение устанавливается, и я также могу войти в систему. Я добавил прослушиватель пакетов 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 для управления присутствием, так как наш сервер использует некую службу интеллектуальной маршрутизации для обработки доступности пользователей. Я делаю что-то не так здесь? Любой вклад будет полезен.


person Abhishek    schedule 15.05.2013    source источник


Ответы (1)


Если вы не можете использовать список, то уверены ли вы, что какое-либо присутствие отправляется этому клиенту в первую очередь?

Входит ли пользователь, под которым зарегистрирован клиент, в список других пользователей в сети?

Вы тестировали явную отправку пакета присутствия клиенту с помощью клиента, где вы можете редактировать необработанный xml?

person James W    schedule 06.08.2013