默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已解决] MobileIMSDK 安卓客户端退出登入后重新登入问题
每次退出登后再登入都提示 发送数据错误 错误码203!  

清理后台后能登入

查了一下说是这个错误码是客户端未初始化的意思

退出代码:
  private void doLogout() {
        // 发出退出登陆请求包(Android系统要求必须要在独立的线程中发送哦)
new AsyncTask<Object, Integer, Integer>(){
                @Override
                protected Integer doInBackground(Object... params)
                {
                    int code = -1;
                    try{
                        code = LocalUDPDataSender.getInstance(mContext).sendLoginout();
                    }
                    catch (Exception e){
                        Log.w(TAG, e);
                    }

                    return code;
                }

            @Override
            protected void onPostExecute(Integer code)
            {
if(code == 0){
                Intent intent = new Intent(mContext, MainActivity.class);
              mContext.startActivity(intent);
                    Log.d(TAG, "注销登陆请求已完成!");
                }
                else{
                Toast.makeText(mContext, "注销登陆请求发送失败。错误码是:"+code+"!", Toast.LENGTH_SHORT).show();
            }

            }
        }.execute();
    }

登入代码:
*/
private void doLogin(){
    if(!CheckNetworkState())
        return;
    LocalUDPSocketProvider.getInstance().closeLocalUDPSocket();
    ConfigEntity.serverIP = SERVERIP;
    ConfigEntity.serverUDPPort = SERVERPORT;
    doLoginImpl();

}

/**
* 登入信息发送实现
*/
private void doLoginImpl(){
    // * 立即显示登陆处理进度提示(并将同时启动超时检查线程)
onLoginProgress.showProgressing(true);
    // * 设置好服务端反馈的登陆结果观察者(当客户端收到服务端反馈过来的登陆消息时将被通知)
IMClientManager.getInstance(this).getBaseEventListener()
            .setLoginOkForLaunchObserver(onLoginSucessObserver);

    // 异步提交登陆名和密码
new LocalUDPDataSender.SendLoginDataAsync(
            MainActivity.this
, account
, password)
    {
        /**
         * 登陆信息发送完成后将调用本方法(注意:此处仅是登陆信息发送完成
         * ,真正的登陆结果要在异步回调中处理哦)。
         *
         * @param code 数据发送返回码,0 表示数据成功发出,否则是错误码
         */
@Override
        protected void fireAfterSendLogin(int code)
        {
            if(code == 0)
            {
                //
Toast.makeText(getApplicationContext(), "数据发送成功!", Toast.LENGTH_SHORT).show();
                Log.d(FragmentTabs.class.getSimpleName(), "登陆信息已成功发出!");
            }
            else
{
                Toast.makeText(getApplicationContext(), "数据发送失败。错误码是:"+code+"!", Toast.LENGTH_SHORT).show();

                // * 登陆信息没有成功发出时当然无条件取消显示登陆进度条
onLoginProgress.showProgressing(false);
            }
        }
    }.execute();
}
参考过
http://www.52im.net/thread-910-1-1.html 这个帖子尝试重登入的时候调用一次 IMClientManager.getInstance(this).initMobileIMSDK(); 还是不行

修改后重新登入时调用初始化
[已解决] MobileIMSDK 安卓客户端退出登入后重新登入问题_1.png


log:
[已解决] MobileIMSDK 安卓客户端退出登入后重新登入问题_2.png


请求帮助 谢谢!


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK

2.png (9.06 KB, 下载次数: 657)

2.png
上一篇:[已回复] MobileIMSDK服务端 gson 换成fastjson 出现错误,如何定位问题?下一篇:[已回复] MobileIMSDK服务端的多设备登陆互踢问题求助

本帖已收录至以下技术专辑

推荐方案
评论 4
你把代码 IMClientManager.getInstance(this).initMobileIMSDK();  加到重登陆的时候,然后把客户端的Log贴上来,越全越好
引用:JackJiang 发表于 2017-07-13 15:14
你把代码 IMClientManager.getInstance(this).initMobileIMSDK();  加到重登陆的时候,然后把客户端的Log贴 ...

上传了
问题已解决:这是Demo代码中少调用了一行代码而已(即在退出登陆时没有重置IMClientManager里的init为false),请取github上最新的demo代码,比对下,很简单的问题!
引用:JackJiang 发表于 2017-07-13 18:36
问题已解决:这是Demo代码中少调用了一行代码而已(即在退出登陆时没有重置IMClientManager里的init为false ...

ok,可以了 谢了
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部