XMPP 获取所有名册的存在和状态消息

Posted

技术标签:

【中文标题】XMPP 获取所有名册的存在和状态消息【英文标题】:XMPP Get All Roster's Presence and Status Messages 【发布时间】:2016-08-31 15:03:13 【问题描述】:

我想在离线之前获取他们提供给服务器的所有联系人的存在和状态信息。 我找到了以下方法来查询一个联系人的存在信息,但我在这里要做的是一次查询我的所有联系人的存在信息。因为如果我有 200 个名册项目,我不想提出 200 个请求。 有没有办法做这样的事情 或者无论如何要在 xmpp 服务器(ejabberd)端改变它

谢谢 托尔加

【问题讨论】:

【参考方案1】:

使用名册获取名册状态和存在。 这是一个例子,

Roster roster = Roster.getInstanceFor(this.connection);
roster.addRosterListener(new RosterListener() 
    @Override
    public void entriesAdded(Collection<String> addresses) 
        // Notified on roster added
    

    @Override
    public void entriesUpdated(Collection<String> addresses) 
        // Notified on roster updated
    

    @Override
    public void entriesDeleted(Collection<String> addresses) 
        // Notified on roster deleted
    

    @Override
    public void presenceChanged(Presence presence) 
        // Notified in roster status changed
        // You will get presences here
    
);

【讨论】:

以上是关于XMPP 获取所有名册的存在和状态消息的主要内容,如果未能解决你的问题,请参考以下文章

XMPP XEP-0313 Smack Android 获取所有名册成员的最新消息

XMPP 聊天:使用 xmppPy 的名册访问联系人的状态消息

无法从 xmpphp 获取用户列表(名册)

Android with Asmack - 当我连接到 XMPP 时如何获取当前状态信息?

如何使用 simple-xmpp/node-xmpp 获得 Jabber 用户的名册?

在登录时检索一个人的名册联系人列表