2017-05-17 1 views
1

quickbloxでユーザーのオンライン/オフライン状態を取得できません。QBRosterを使用して試しました。Android:quickbloxを使用して、ユーザーのオンライン/オフラインステータスを取得するにはどうすればよいですか?

ユーザーのプレゼンスを取得するために書いた機能です。

private void subscribeUserForStatus(ArrayList<Integer> mQBUserList) { 

    if (QBChatService.getInstance().getRoster() != null) { 
     mQbRoster = QBChatService.getInstance().getRoster(
       QBRoster.SubscriptionMode.mutual, this); 
     mQbRoster.addRosterListener(this); 

     for (Integer mId : mQBUserList) { 

      try { 

        if (mQbRoster.contains(mId)) { 
        mQbRoster.subscribe(mId); 

       } else { 
        mQbRoster.createEntry(mId, null); 

       } 

      } catch (SmackException.NotConnectedException e) { 
       e.printStackTrace(); 
       Log.e("Crash on subscription", e.getMessage()); 
      } 
     } 
    } 
} 

答えて

0

あなたはこのコードを使用することができます

Roster roster = 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()); 
} 
4
int userID = 45; 

QBPresence presence = chatRoster.getPresence(userID); 
if (presence == null) { 
    // No user in your roster 
    return; 
} 

if (presence.getType() == QBPresence.Type.online) { 
    // User is online 
}else{ 
    // User is offline 
} 

また、これはあなたを助けることができます。

QBRosterListener rosterListener = new QBRosterListener() { 
    @Override 
    public void entriesDeleted(Collection<Integer> userIds) { 

    } 

    @Override 
    public void entriesAdded(Collection<Integer> userIds) { 

    } 

    @Override 
    public void entriesUpdated(Collection<Integer> userIds) { 

    } 

    @Override 
    public void presenceChanged(QBPresence presence) { 

    } 
}; 

このリンクは便利です: https://quickblox.com/developers/Android_XMPP_Chat_Sample

+0

存在が変更されたときに更新されますか? – Jaymin

+0

はい更新されます –

+0

はい、既にリスナーが実装されていますが、正確には更新されていません。 – Jaymin

2

上記の解答Iあなたはこのように使うことができます

QBRosterListener rosterListener = new QBRosterListener() { 
@Override 
public void entriesDeleted(Collection<Integer> userIds) { 

} 

@Override 
public void entriesAdded(Collection<Integer> userIds) { 

} 

@Override 
public void entriesUpdated(Collection<Integer> userIds) { 

} 

@Override 
public void presenceChanged(QBPresence presence) { 
     if (presence == null) { 
// No user in your roster 
return; 
} 

if (presence.getType() == QBPresence.Type.online) { 
// User is online 
}else{ 
// User is offline 
} 
} 
}; 
関連する問題