2012-04-02 1 views
0

J'utilise l'API smack pour accepter ou rejeter la demande de contact envoyée à un utilisateur. Avant de rendre le client (mon produit dispose d'un système de notification et je crée une notification à l'utilisateur lorsqu'il est ajouté à la liste de quelqu'un), j'aimerais connaître l'état de la demande d'abonnement. Pour que je puisse montrer les boutons accepter/rejeter pour que l'utilisateur agisse et si l'action déjà passée rendrait le message "Vous avez déjà accepté/refusé".Comment trouver une demande de contact acceptée ou rejetée dans XMPP?

Je comprends que si l'utilisateur A avait reçu une demande de B et si A accepte la demande, le statut d'abonnement de l'entrée de répertoire devient FROM ou BOTH. Mais comment puis-je savoir si j'ai rejeté une demande d'abonnement d'un certain utilisateur?

Répondre

0

Pour écouter si l'utilisateur a rejeté votre demande d'ajout de contact. Vous devez enregistrer un PacketListener avec un filtrage des paquets de la classe Presence. Dans celui-ci vous obtiendrez un paquet de présence de type désabonné de l'utilisateur, qui a rejeté la demande.

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