項目需要集成融云的IM,所以就硬著頭皮上了。
基本的快速集成,看官網(wǎng)教程就足夠了,鏈接:http://www.rongcloud.cn/docs/android.html#快速集成
斷開鏈接的重連:
本項目背景:首次打開,在app登陸的時候順便與融云服務器鏈接,調(diào)用RongIM.connect()方法即可。
由于本人知識水平的限制,以為在登陸app的時候順便鏈接融云就可以了,但實際上是當你本地第一次運行的時候是沒問題的。但是當重新打開app的時候,會顯示“無法連接服務器”
看了好久的官方文檔還是毫無頭緒,又提交了好幾次工單,看了知識庫的問題,基本上工作人員給出的解決方案都是用RongIMClient.ConnectionStatusListener跟蹤一下狀態(tài)。一開始看或許很困難,但是要有耐心,下面附上截圖:

可以看出,連接狀態(tài)的枚舉有7種,DISCONNECTEDTED是斷開連接。接下來就好辦啦!請看下面:
斷網(wǎng)重連的直觀方法:
第一步:先判斷一下是否是斷開連接的狀態(tài),代碼:
? ? ? ? ? ? if(RongIM.getInstance().getRongIMClient().getCurrentConnectionStatus()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?==RongIMClient.ConnectionStatusListener.ConnectionStatus.DISCONNECTED){
? ? ? ? ? ? ? ? ? ? ? ? ? 重連的代碼;
? ? ? ? ? ? ? ? ? ? ? ? ? ?..............
? ? ? ? ? ? ? ? ? ? }
第二步:重新向server端請求token(或者使用第一次登陸的token)
第三步:重連。就是再一次調(diào)用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;
}
});
}
}