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

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

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

【问题讨论】:

    标签: xmpp smack


    【解决方案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));
    

    【讨论】:

      猜你喜欢
      • 2019-06-06
      • 1970-01-01
      • 2011-11-11
      • 2018-06-18
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      相关资源
      最近更新 更多