项目需要集成融云的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;
}
});
}
}