我使用smack API接受或拒绝发送给用户的联系请求。 在我呈现客户端之前(我的产品有一个通知系统,当我/她被添加到某个人的名单时我会向用户创建通知),我想知道订阅请求的状态。这样我就可以显示接受/拒绝按钮供用户采取行动,如果已经发生的行为将呈现出“你已经接受/拒绝”的消息。
据我所知,如果用户A收到了来自B的请求,并且A接受了请求,那么名册条目的订阅状态将变为FROM或BOTH。 但是,如何判断我是否拒绝了某个用户的订阅请求?
答案 0 :(得分:0)
如果用户拒绝了您的添加好友请求,请收听。您需要注册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));