我正在使用smack 3.1.0,当我添加一个名册时,我无法获得"两者"的订阅.谁能帮我?下面是我的代码:
Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.accept_all);
Roster roster = connection.getRoster();
roster.createEntry("buddy@test.com","me",null)
Run Code Online (Sandbox Code Playgroud)
代码执行后,我在openfire中观察到订阅是"到"
Joe*_*and 41
重写@ mschonaker的答案要更清楚一些.
两个用户都需要相互订阅并接受他们收到的订阅请求.我们称他们为爱丽丝和鲍勃.Alice向Bob发送订阅请求:
Presence subscribe = new Presence(Presence.Type.subscribe);
subscribe.setTo('bob@example.com');
connection.sendPacket(subscribe);
Run Code Online (Sandbox Code Playgroud)
当Bob收到请求时,他批准了:
Presence subscribed = new Presence(Presence.Type.subscribed);
subscribed.setTo('alice@example.com');
connection.sendPacket(subscribed);
Run Code Online (Sandbox Code Playgroud)
Bob也可能对Alice的存在感兴趣,所以他订阅了她:
Presence subscribe = new Presence(Presence.Type.subscribe);
subscribe.setTo('alice@example.com');
connection.sendPacket(subscribe);
Run Code Online (Sandbox Code Playgroud)
Alice需要批准Bob的请求:
Presence subscribed = new Presence(Presence.Type.subscribed);
subscribed.setTo('bob@example.com');
connection.sendPacket(subscribed);
Run Code Online (Sandbox Code Playgroud)
RFC6121的3.1节是当前最佳参考方法.
msc*_*ker 10
两个用户都需要相互订阅.通过发送在线订阅节.在Smack中:
Presence presence = new Presence(Presence.Type.subscribe);
presence.setTo(jid);
connection.sendPacket(presence);
Run Code Online (Sandbox Code Playgroud)
RFC6121的3.1节将为您提供语义细节.