I am using quick blox sdk to chat and show online users and update their online/offline status. Everything works fine but on first time login 5xxxx7 QBId presence is received as per below logs,
D/SMACK: RECV (1): <presence xmlns="jabber:client" from="5388507-28074@chat.quickblox.com/android_00000000-57d0-4ecf-ffff-ffffef05ac4a" to="16269676-28074@chat.quickblox.com" id="bQzT2-9587"/>
09-30 16:38:19.944 20513-21578/com.FCK.provider D/NativeCrypto: ssl=0xd86e0d40 sslRead buf=0xd403af98 len=104,timeo=60000
But in my presence listener nothing is logged:
rosterListener = new QBRosterListener() {
@Override
public void entriesDeleted(Collection<Integer> userIds) {
log("entriesDeleted: " + userIds);
}
@Override
public void entriesAdded(Collection<Integer> userIds) {
log("entriesAdded: " + userIds);
}
@Override
public void entriesUpdated(Collection<Integer> userIds) {
log("entriesUpdated: " + userIds);
}
@Override
public void presenceChanged(QBPresence presence) {
log("presenceChanged: " + presence);
EventBus.getDefault().post(presence);
if(chatServiceListener != null){
chatServiceListener.presenceChanged(presence);
}
// {type=online, user=5507990, status=null}
}
};
Even if I get presence manually by below code I get user as offline even if he is online and I can chat with him:
QBPresence presence = сhatRoster.getPresence(userID);
if (presence == null) {
log("No user in your roster");
return;
}
if (presence.getType() == QBPresence.Type.online) {
log("User " + userID + " is online");
} else {
log("User " + userID + " is offline");
}
Updated the Quick Blox SDK used with below code in gradle file and it is Solved:
dependencies {
compile("com.quickblox:quickblox-android-sdk-chat:2.6.1")
}