【发布时间】:2017-07-03 12:03:29
【问题描述】:
我已在我的应用程序中集成了 quickblox 聊天,并希望保持用户在线和离线状态并尝试了以下选项。
1) 如文档中所述,我已关注此链接 https://quickblox.com/developers/SimpleSample-users-android#Online.5COffline_status,但存在一个问题是它无法明确用户在线状态
2) 使用 Ping 管理器:https://quickblox.com/developers/Android_XMPP_Chat_Sample#Ping_a_user 但它总是给出 QBResponseException
3) QBRoaster:此选项不符合要求。
[注意:我使用的是 quickblox 3.3.1 版]
我已经按如下方式实现了 QBPingManager
public void checkUserOnlineStatus(String mOpponentName) {
QBChatService.getInstance().getPingManager().setPingInterval(1);
Performer<QBUser> qbUser = QBUsers.getUserByLogin(mOpponentName);
qbUser.performAsync(new QBEntityCallback<QBUser>() {
@Override
public void onSuccess(QBUser qbUser, Bundle bundle) {
final int mOpponentUserId = qbUser.getId();
final QBPingManager pingManager = QBChatService.getInstance().getPingManager();
pingManager.pingServer(new QBEntityCallback<Void>() {
@Override
public void onSuccess(Void aVoid, Bundle bundle) {
pingManager.pingUser(mOpponentUserId, new QBEntityCallback<Void>() {
@Override
public void onSuccess(Void aVoid, Bundle bundle) {
Timber.tag(TAG).w("Opponent User is online ");
}
@Override
public void onError(QBResponseException e) {
Timber.tag(TAG).e("message(ping user): " + e.getMessage() + "\n localized message: " + e.getLocalizedMessage());
e.printStackTrace();
}
});
}
@Override
public void onError(QBResponseException e) {
Timber.tag(TAG).e("message (ping server): " + e.getMessage() + "\n localized message: " + e.getLocalizedMessage());
}
});
}
@Override
public void onError(QBResponseException e) {
Timber.tag(TAG).e("Error : " + e.getMessage() + "\n Message : " + e.getLocalizedMessage());
}
});
}
感谢您的任何帮助。
【问题讨论】: