首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在订阅模式为both的情况下添加花名册

如何在订阅模式为both的情况下添加花名册
EN

Stack Overflow用户
提问于 2011-04-27 18:27:59
回答 3查看 15.9K关注 0票数 18

我使用的是smack 3.1.0,当我添加一个花名册时,我无法获得订阅“两者都有”。有谁能帮帮我呢?下面是我的代码:

代码语言:javascript
复制
Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.accept_all);
Roster roster = connection.getRoster();
roster.createEntry("buddy@test.com","me",null)

在代码执行之后,我在openfire中观察到订阅是"to“

EN

回答 3

Stack Overflow用户

发布于 2011-05-25 07:44:27

两个用户都需要相互订阅。通过发送在线状态订阅节。在Smack中:

代码语言:javascript
复制
    Presence presence = new Presence(Presence.Type.subscribe);
    presence.setTo(jid);
    connection.sendPacket(presence);

Section 3.1 of the RFC6121将为您提供语义细节。

票数 10
EN

Stack Overflow用户

发布于 2014-03-12 21:13:27

如果你使用的是open fire服务器,你也可以使用User Service plugin,它将创建带有订阅的花名册。

票数 1
EN

Stack Overflow用户

发布于 2017-09-18 17:48:15

我遇到了同样的问题,但我得到了解决方案,如何订阅设置‘两者’

下面是向用户发送订阅,当您添加用户时

代码语言:javascript
复制
 Presence pres = new Presence(Presence.Type.subscribed);
        pres.setPriority(24);
        pres.setMode(Presence.Mode.available);
        pres.setTo(friendJid);

        RoosterConnection.getConnection().sendStanza(pres);

接收端将下面的方法放在connection类中,presenceChanged是RosterListener的默认方法。

代码语言:javascript
复制
 @Override
public void presenceChanged(Presence presence) {
    mBus.post(presence);
    try {
        Presence pres = new Presence(Presence.Type.subscribed);
        pres.setTo(presence.getFrom());
        RoosterConnection.getConnection().sendStanza(pres);
    } catch (SmackException.NotConnectedException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5802607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档