Как узнать, что запрос на контакт принят или отклонен в XMPP? - PullRequest
0 голосов
/ 02 апреля 2012

Я использую smack API, чтобы принять или отклонить запрос контакта, отправленный пользователю. Перед тем, как отобразить клиента (у моего продукта есть система уведомлений, и я создаю уведомление для пользователя, когда он / она добавляется в чей-то список), я хотел бы узнать состояние запроса на подписку. Так что я могу показать кнопки «принять / отклонить», чтобы пользователь мог действовать, и если действие уже произошло, отобразится сообщение «Вы уже приняли / отклонили».

Я понимаю, что если пользователь A получил запрос от B и если A принимает запрос, то статус подписки записи в реестре становится ОТ или ОБА. Но как я могу узнать, отклонил ли я запрос на подписку от определенного пользователя?

1 Ответ

0 голосов
/ 26 февраля 2013

Чтобы прослушать, если пользователь отклонил ваш запрос на добавление в друзья.Вам необходимо зарегистрировать PacketListener с фильтрацией пакетов класса Presence.В нем вы получите пакет присутствия типа отписавшегося от пользователя, который отклонил запрос.

public class RequestListener implements PacketListener {
    @Override
    public void processPacket(Packet pack) {
        Presence pres = (Presence) pack;
        if (pres.getType() != null && 
                     pres.getType().equals(Presence.Type.unsubscribed)) {
            // user with jid pres.getFrom() rejected your request.
        }
    }
}

// somewhere in code to register the request listener after login
connection.addPacketListener(new RequestListener(), 
      new PacketTypeFilter(Presence.class));
...