This commit is contained in:
18401019693
2022-07-22 16:27:19 +08:00
parent 0cd6ab5e9d
commit cbf43a3aa3
17 changed files with 334 additions and 41 deletions

View File

@@ -13,6 +13,8 @@ import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.manager.base.BaseCacheManager;
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
import java.util.Map;
@@ -99,11 +101,15 @@ public class IMLoginManager extends BaseCacheManager {
* 退出登录
*/
public void logout() {
//添加融云连接状态监听
RongcloudIMManager.removeIMStatusListener();
//删除用户登录信息
deleteByKey(KEY_USER_INFO);
//用户对象置空
userInfo = null;
manager = null;
RongcloudIMManager.logoutIM();
MessageIMManager.get(context).logout();
}
}

View File

@@ -11,6 +11,7 @@ import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.manager.base.BaseCacheManager;
import java.util.HashMap;
import java.util.Map;
/**
@@ -38,6 +39,9 @@ public class InstructorRemarkManager extends BaseCacheManager {
instructorRemarkMap = JSON.parseObject(getString(KEY_INSTRUCTOR_REMARK), new TypeReference<Map<String, String>>() {
});
}
if (instructorRemarkMap == null) {
instructorRemarkMap = new HashMap<>();
}
return instructorRemarkMap;
}

View File

@@ -34,6 +34,15 @@ public class MessageIMManager {
number = 0;
}
public void logout() {
number = 0;
imNumber = 0;
systemNumber = 0;
//发送通知
unreadMessagesHandler.post(essagesRunnable);
manager = null;
}
/**
* 获取单利
*/
@@ -85,6 +94,8 @@ public class MessageIMManager {
try {
if (!TextUtils.isEmpty(number) && Integer.parseInt(number) > 0) {
systemNumber = Integer.parseInt(number);
}else {
systemNumber = 0;
}
} catch (NumberFormatException e) {
systemNumber = 0;
@@ -125,6 +136,8 @@ public class MessageIMManager {
try {
if (!TextUtils.isEmpty(number) && Integer.parseInt(number) > 0) {
systemNumber = Integer.parseInt(number);
}else {
systemNumber = 0;
}
} catch (NumberFormatException e) {
systemNumber = 0;
@@ -148,7 +161,7 @@ public class MessageIMManager {
//整合未读消息数目并且发送出去
private final Runnable essagesRunnable = () -> {
number = imNumber + systemNumber;
EventBus.getDefault().postSticky(new MessageIMEvent().setNumber(number));
EventBus.getDefault().post(new MessageIMEvent().setNumber(number));
};
}

View File

@@ -10,13 +10,19 @@ import androidx.annotation.NonNull;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.request.RequestOptions;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.manager.IMLoginManager;
import org.greenrobot.eventbus.EventBus;
import cn.rongcloud.rtc.api.RCRTCEngine;
import io.rong.imkit.GlideKitImageEngine;
import io.rong.imkit.IMCenter;
import io.rong.imkit.RongIM;
import io.rong.imkit.config.RongConfigCenter;
import io.rong.imlib.RongCoreClient;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.Message;
@@ -107,7 +113,8 @@ public class RongcloudIMManager {
public void onSuccess(String s) {
//连接成功,如果 onDatabaseOpened() 时没有页面跳转,也可在此时进行跳转。
Log.e(CLASSNAME, "onSuccess:" + s);
//添加融云连接状态监听
RongcloudIMManager.setIMStatusListener();
}
@Override
@@ -145,6 +152,10 @@ public class RongcloudIMManager {
RongIM.setConnectionStatusListener(connectionStatusListener);
}
public static void removeIMStatusListener() {
RongIM.setConnectionStatusListener(null);
}
/**
* 监听 IM 连接状态,可根据连接状态进行不同业务处理
*/
@@ -159,6 +170,7 @@ public class RongcloudIMManager {
break;
//用户账号在其它设备登录,此设备被踢下线
case KICKED_OFFLINE_BY_OTHER_CLIENT:
// EventBus.getDefault().post(new BaseModel());
break;
//连接暂时挂起多是由于网络问题导致SDK 会在合适时机进行自动重连
case SUSPEND: