Android集成融云IM走过的坑(一):项目登陆后,重新打开app,与融云断开连接的解决方案

项目需要集成融云的IM,所以就硬着头皮上了。

基本的快速集成,看官网教程就足够了,链接:http://www.rongcloud.cn/docs/android.html#快速集成

断开链接的重连:

本项目背景:首次打开,在app登陆的时候顺便与融云服务器链接,调用RongIM.connect()方法即可。

由于本人知识水平的限制,以为在登陆app的时候顺便链接融云就可以了,但实际上是当你本地第一次运行的时候是没问题的。但是当重新打开app的时候,会显示“无法连接服务器”

看了好久的官方文档还是毫无头绪,又提交了好几次工单,看了知识库的问题,基本上工作人员给出的解决方案都是用RongIMClient.ConnectionStatusListener跟踪一下状态。一开始看或许很困难,但是要有耐心,下面附上截图:



可以看出,连接状态的枚举有7种,DISCONNECTEDTED是断开连接。接下来就好办啦!请看下面:

断网重连的直观方法:

第一步:先判断一下是否是断开连接的状态,代码:

            if(RongIM.getInstance().getRongIMClient().getCurrentConnectionStatus()

                               ==RongIMClient.ConnectionStatusListener.ConnectionStatus.DISCONNECTED){

                          重连的代码;

                           ..............

                    }

第二步:重新向server端请求token(或者使用第一次登陆的token)

第三步:重连。就是再一次调用RongIM.connect()方法


请看完整代码:


public voidreconnect(){

ACacheaCache=ACache.get(this);

Stringid=aCache.getAsString("idnumber");

if(RongIM.getInstance().getRongIMClient().getCurrentConnectionStatus()

==RongIMClient.ConnectionStatusListener.ConnectionStatus.DISCONNECTED) {

HttpUtil.httppost(Server_parameter.REGETRMTOKRN_URL,Json_helper.parseHomeworkJson(id), newHttpUtil.QueryCallback() {

@Override

publicString handleResult(byte[]result) {

try{

Stringresultjson= newString(result,"utf-8");

Stringtoken=Json_helper.parseRMToken(resultjson);

RongIM.connect(token, newRongIMClient.ConnectCallback() {

@Override

public voidonTokenIncorrect() {

}

@Override

public voidonSuccess(Strings) {

Log.i("TAG","重连成功:"+s);

}

@Override

public voidonError(RongIMClient.ErrorCodeerrorCode) {

Log.e("TAG","重连失败:"+errorCode);

}

});

}catch(UnsupportedEncodingExceptione) {

e.printStackTrace();

}

return null;

}

});

}

}

你可能感兴趣的:(Android集成融云IM走过的坑(一):项目登陆后,重新打开app,与融云断开连接的解决方案)