Quickblox一对一的聊天连接丢失了

时间:2014-01-22 06:51:03

标签: android xmpp chat quickblox

我使用Quickblox SDK版本0.8.1开发了聊天应用程序。有时,app会丢失与服务器的聊天连接,因此即使在同一个聊天页面中也无法发送消息或接收消息。每次发生这种情况时我都必须重新加载,即使有时它不会重新连接。所以任何人都可以帮助我。

3 个答案:

答案 0 :(得分:2)

要重新连接聊天,请执行以下操作:

iOS方式

- (void)chatDidFailWithError:(int)code
{
    // reconnect
    [[QBChat instance] loginWithUser:[LocalStorageController shared].qbUser];
}

Android方式(SDK 1.1版)

// initialize SMACK
SmackAndroid.init(this);

final QBUser user = new QBUser("garry", "garry2892pass");
user.setId(4234);
QBChatService.getInstance().loginWithUser(user, LoginActivity.this);


@Override
public void onLoginSuccess() {
    Log.d(TAG, "success when login");
}

@Override
public void onLoginError() {
    Log.e(TAG, "error when login");
}

@Override
public void onDisconnect() {
    Log.d(TAG, "disconnect when login");

    // Relogin here
}

@Override
public void onDisconnectOnError(Exception exc) {
    Log.e(TAG, "disconnect error when login", exc);

    // Relogin here
}

此处有更多信息http://quickblox.com/developers/Android_XMPP_Chat_Sample

只需在此处将Android SDK更新为1.1 http://quickblox.com/developers/Android#Download_Android_SDK

答案 1 :(得分:2)

使用最新版本的quickblox。目前的版本是1.1。

根据此文档,您必须在使用计时器登录后发送在线状态。 http://quickblox.com/developers/Android_XMPP_Chat_Sample

登录后

QBChatService.getInstance().startAutoSendPresence(60);

希望这会解决。

答案 2 :(得分:1)

使用Quickblox SDK 2.0时使用这种方式

ConnectionListener connectionListener = new ConnectionListener() {
@Override
public void connected(XMPPConnection connection) {

}

@Override
public void authenticated(XMPPConnection connection) {

}

@Override
public void connectionClosed() {

}

@Override
public void connectionClosedOnError(Exception e) {
    // connection closed on error. It will be established soon
}

@Override
public void reconnectingIn(int seconds) {

}

@Override
public void reconnectionSuccessful() {

}

@Override
public void reconnectionFailed(Exception e) {

}
};



QBChatService.getInstance().addConnectionListener(connectionListener);