【问题标题】:How I get the all user state infromation(offline/online/away/etc.) by XMPP aSmack我如何通过 XMPP aSmack 获取所有用户状态信息(离线/在线/离开/等)
【发布时间】:2015-04-03 21:38:42
【问题描述】:

我正在尝试使用 XMPP(aSmack) 来实现 android 聊天应用程序。我检查我的代码是否正确,可以登录、注册。现在我正在尝试获取所有用户信息(离线/在线/离开/等)我尝试通过 Presence 使用。但我无法成功。当 xmpp 连接正常且用户登录成功时,我通过

调用 Presence
if (connection != null && connection.isConnected()) {
        Presence presence = new Presence(Presence.Type.available);
        presence.setStatus("I’m available");
        connection.sendPacket(presence);
        Log.w("type", "I’m available");
    }

调用此函数后,我尝试获取所有用户信息。我的名册代码是:

    Roster roster = connection.getRoster();
    // Get all rosters
    Collection<RosterEntry> entries = roster.getEntries();
    Log.w("Size ", "are"+entries.size());
    // loop through
    for (RosterEntry entry : entries) {
        // example: get presence, type, mode, status
        Presence entryPresence = roster.getPresence(entry.getUser());
        Presence.Type userType = entryPresence.getType();
        Presence.Mode mode = entryPresence.getMode();
        String status = entryPresence.getStatus();

        Log.w("mode ", "are"+mode);
        Log.w("status ", "are"+status);
        Log.w("mode ", "are"+entryPresence.isAvailable());
    }

但我的问题是,我总是得到一个条目大小,我是谁。没有我的模式总是显示错误(这意味着我不可用)。我不明白这是什么问题。我需要努力服务器配置。再次。或者我的代码是错误的。请帮助我如何解决这两个问题。谢谢大家。

【问题讨论】:

  • 你用的是哪个aSmack版本?
  • Hello@Flow 感谢您的回复。我使用 asmack-android-8-0.8.10.jar 。使用这个版本有什么问题吗?
  • 我不知道,但 4.0.6 是目前最新的稳定版 aSmack。您可能需要考虑更新。
  • 你好@谢谢你的回答。你能提供我获得版本的具体链接以及我如何解决我的问题。名册已创建,但所有时间存在都“不可用”。

标签: java android xmpp asmack livechat


【解决方案1】:

您可以使用连接对象从服务器获取所有名册

Roster roster = mConnection.getRoster();

mConnection 是 xmpp 连接对象。您还应该将名册侦听器添加到名册对象。

更多信息可以参考this link

【讨论】:

    猜你喜欢
    • 2013-01-05
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2016-07-09
    • 2021-07-06
    相关资源
    最近更新 更多