QuickBlox:如何获得在线可用用户列表

时间:2013-03-06 11:34:27

标签: android quickblox

我正在使用QuickBlox API创建聊天应用程序, 从示例应用程序我可以获得我的帐户中的所有列表用户。但我想只显示在线可用用户。如何检索在线可用用户?

4 个答案:

答案 0 :(得分:2)

我可以使用XMPP连接的Rooster通过SMACK API获取QuickBlox聊天模块的在线用户。检查这个答案。

Can I get online users in my friend list via Smack?

您需要聊天模块的在线用户还是其他用户?

干杯!

答案 1 :(得分:1)

使用smack API为在线可用用户尝试此操作。   名册名单= xmppConnection.getRoster();

  Collection<RosterEntry> entries = roster.getEntries();
  Presence presence;

    for(RosterEntry entry : entries) {
        presence = roster.getPresence(entry.getUser());

        System.out.println(entry.getUser());
        System.out.println(presence.getType().name());
        System.out.println(presence.getStatus());
    }

检查用户是否在线(或)离线

  Presence presence = roster.getPresence("tom@jabber.org");
   if (presence.getType() == Presence.Type.AVAILABLE) {
       // Tom is online...
        }

通过使用presence.getMode()方法获取用户模式。模式是枚举,其值可以是聊天,可用,离开,xa,dnd。

答案 2 :(得分:0)

XMPPConnection.addConnectionCreationListener(new ConnectionCreationListener(){

    @Override
    public void connectionCreated(Connection arg0) {
        Log.i(TAG, "receive xmpp connection : " + arg0);
        connection = arg0;
        roster = arg0.getRoster();

        Collection<RosterEntry> entries = roster.getEntries();
        Presence presence;

        Log.e(TAG, "user count" + entries.size());

        for (RosterEntry entry : entries) {
            presence = roster.getPresence(entry.getUser());

            Log.i(TAG, "" + entry.getUser());
            Log.i(TAG, "" + presence.getType().name());
            Log.i(TAG, "" + presence.getStatus());
        }

    }
});

答案 3 :(得分:0)

您可以按照以下方式执行此操作:

1-定义名册

  private SmackAndroid smackAndroid;
  private Roster roster;

2-在onCreate中,初始化smackAndroid并添加XMPPConnectionListener

  smackAndroid = SmackAndroid.init(this);
  XMPPConnection.addConnectionCreationListener(new ConnectionCreationListener() {

    @Override
    public void connectionCreated(Connection connection) {
      roster = connection.getRoster();

    }
  });

3-您可以使用createEntry

将用户添加到名单
  try {
    roster.createEntry("UserId", "userName", new String[] { "Friends" });
  } catch (XMPPException e) {
    e.printStackTrace();
  }

4-您可以使用getEntry()

获取Entries表单
  ArrayList<String> friends = new ArrayList<String>();
  Collection<RosterEntry> entries = roster.getEntries();
  for (RosterEntry entry : entries) {
    friends.add(entry.getName());
  }