如何确定 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 中接受或拒绝联系请求?的主要内容,如果未能解决你的问题,请参考以下文章