如何确定 XMPP 中接受或拒绝联系请求?

Posted

技术标签:

【中文标题】如何确定 XMPP 中接受或拒绝联系请求?【英文标题】:How to find out a contact request is accepted or rejected in XMPP? 【发布时间】:2012-04-02 10:30:36 【问题描述】:

我正在使用 smack API 来接受或拒绝发送给用户的联系请求。 在我呈现客户端之前(我的产品有一个通知系统,当他/她被添加到某人的名册时我创建一个通知给用户),我想知道订阅请求的状态。这样我就可以显示接受/拒绝按钮供用户操作,如果操作已经发生,则会显示“您已经接受/拒绝”的消息。

我了解,如果用户 A 收到了来自 B 的请求,并且如果 A 接受该请求,那么名册条目的订阅状态将变为 FROM 或 BOTH。 但是如何判断我是否拒绝了某个用户的订阅请求?

【问题讨论】:

【参考方案1】:

监听用户是否拒绝了您的添加好友请求。您需要注册一个 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));

【讨论】:

以上是关于如何确定 XMPP 中接受或拒绝联系请求?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 XMPP 中接受好友请求?

拒绝 Xmpp 中的请求 - 从名册中删除条目

iphone xmpp 相关!

如何使用 SleekXMPP 或 python 处理 XMPP 订阅我一般

Xmpp 接受好友请求

xmpp bot 接受新朋友?