1

QuickBlox API を使用してチャット アプリケーションを作成しています。サンプル アプリから、アカウント内のすべてのリスト ユーザーを取得できますが、オンラインで利用可能なユーザーのみを表示したいと考えています。オンラインで利用可能なユーザーを取得するにはどうすればよいですか?

4

4 に答える 4

2

XMPP 接続の Rooster を使用して、SMACK API を介して QuickBlox チャット モジュールのオンライン ユーザーを取得できます。この回答を確認してください。

Smack 経由でオンライン ユーザーをフレンド リストに追加できますか?

チャットモジュールまたは他のモジュールのオンラインユーザーが必要ですか?

乾杯!

于 2013-03-06T12:51:12.917 に答える
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() メソッドを使用してユーザーのモードを取得します。モードは列挙型で、その値は、chat、available、a​​way、xa、dnd のいずれかです。

于 2013-03-06T13:13:02.813 に答える
0

XMPPConnection.addConnectionCreationListener(新しい 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());
        }

    }
});
于 2014-02-21T13:14:45.800 に答える