【问题标题】:Quickblox one to one chat connection lostQuickblox 一对一聊天连接丢失
【发布时间】:2014-02-12 02:35:03
【问题描述】:

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

【问题讨论】:

    标签: android xmpp chat quickblox


    【解决方案1】:

    要重新连接到 Chat,请执行以下操作:

    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

    【讨论】:

    • 嗨!感谢您的回复。你能在Android中提供这个代码吗?而且我使用的是 0.8.1 版,所以这段代码可以工作吗?
    【解决方案2】:

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

    根据本文档,您必须在使用计时器登录后发送出席信息。 http://quickblox.com/developers/Android_XMPP_Chat_Sample

    登录后

    QBChatService.getInstance().startAutoSendPresence(60);

    希望这会解决。

    【讨论】:

      【解决方案3】:

      在使用 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多