123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- package com.cooleshow.chatmodule.manager;
- import android.content.Context;
- import android.text.TextUtils;
- import com.alibaba.android.arouter.launcher.ARouter;
- import com.cooleshow.base.router.RouterPath;
- import com.cooleshow.base.utils.LOG;
- import com.cooleshow.chatmodule.constants.IMConstants;
- import com.cooleshow.chatmodule.contract.IUnReadMessageObserver;
- import com.cooleshow.usercenter.constants.UserConstants;
- import com.cooleshow.usercenter.helper.UserHelper;
- import com.tencent.imsdk.v2.V2TIMCallback;
- import com.tencent.imsdk.v2.V2TIMConversationListener;
- import com.tencent.imsdk.v2.V2TIMManager;
- import com.tencent.imsdk.v2.V2TIMMessage;
- import com.tencent.imsdk.v2.V2TIMSendCallback;
- import com.tencent.qcloud.tuicore.TUILogin;
- import com.tencent.qcloud.tuicore.interfaces.TUICallback;
- import com.tencent.qcloud.tuicore.interfaces.TUILoginListener;
- import com.tencent.qcloud.tuicore.util.ErrorMessageConverter;
- import com.tencent.qcloud.tuikit.timcommon.component.interfaces.IUIKitCallback;
- import com.tencent.qcloud.tuikit.tuiconversation.commonutil.TUIConversationLog;
- import com.tencent.qcloud.tuikit.tuiconversation.commonutil.TUIConversationUtils;
- import com.tencent.qcloud.tuikit.tuigroup.util.TUIGroupLog;
- import com.tencent.qcloud.tuikit.tuigroup.util.TUIGroupUtils;
- /**
- * Author by pq, Date on 2023/6/29.
- */
- public class IMCenter {
- public static final String TAG = "IMCenter";
- private TUILoginListener mListener = new TUILoginListener() {
- @Override
- public void onKickedOffline() {
- super.onKickedOffline();
- LOG.i("onKickedOffline");
- goLogin();
- }
- @Override
- public void onUserSigExpired() {
- super.onUserSigExpired();
- LOG.i("onUserSigExpired");
- goLogin();
- }
- };
- private IMCenter() {
- }
- public static IMCenter getInstance() {
- return IMCenterHolder.sCenter;
- }
- private static final class IMCenterHolder {
- private static IMCenter sCenter = new IMCenter();
- }
- public void loginIM(Context context, String imUserId, String imToken) {
- int loginStatus = V2TIMManager.getInstance().getLoginStatus();
- if (loginStatus == V2TIMManager.V2TIM_STATUS_LOGINED) {
- return;
- }
- if (loginStatus == V2TIMManager.V2TIM_STATUS_LOGINING) {
- return;
- }
- TUILogin.addLoginListener(mListener);
- TUILogin.login(context.getApplicationContext(), IMConstants.getSdkAPPId(), imUserId, imToken, new TUICallback() {
- @Override
- public void onError(final int code, final String desc) {
- LOG.i("im login onError:" + code + "--reason:" + desc);
- }
- @Override
- public void onSuccess() {
- LOG.i("im login success");
- }
- });
- }
- public void logoutIM() {
- TUILogin.removeLoginListener(mListener);
- TUILogin.logout(new TUICallback() {
- @Override
- public void onSuccess() {
- }
- @Override
- public void onError(int errorCode, String errorMessage) {
- }
- });
- }
- public void deleteConversation(String conversationId, IUIKitCallback<Void> callBack) {
- V2TIMManager.getConversationManager().deleteConversation(conversationId, new V2TIMCallback() {
- @Override
- public void onError(int code, String desc) {
- TUIConversationLog.e(TAG, "deleteConversation error:" + code + ", desc:" + ErrorMessageConverter.convertIMError(code, desc));
- TUIConversationUtils.callbackOnError(callBack, TAG, code, desc);
- }
- @Override
- public void onSuccess() {
- TUIConversationLog.i(TAG, "deleteConversation success");
- TUIConversationUtils.callbackOnSuccess(callBack, null);
- }
- });
- }
- public String getConversationIdFromId(String targetId, boolean isGroup) {
- if (isGroup) {
- return "group_" + targetId;
- }
- return "c2c_" + targetId;
- }
- /**
- * 消息免打扰
- *
- * @param groupId
- * @param isReceive
- * @param callBack
- */
- public void setGroupReceiveMessageOpt(String groupId, boolean isReceive, IUIKitCallback callBack) {
- int option;
- if (!isReceive) {
- option = V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE;
- } else {
- option = V2TIMMessage.V2TIM_RECEIVE_MESSAGE;
- }
- V2TIMManager.getMessageManager().setGroupReceiveMessageOpt(groupId, option, new V2TIMCallback() {
- @Override
- public void onSuccess() {
- TUIGroupUtils.callbackOnSuccess(callBack, null);
- TUIGroupLog.d(TAG, "setReceiveMessageOpt onSuccess");
- }
- @Override
- public void onError(int code, String desc) {
- TUIGroupUtils.callbackOnError(callBack, code, desc);
- TUIGroupLog.d(TAG, "setReceiveMessageOpt onError code = " + code + ", desc = " + ErrorMessageConverter.convertIMError(code, desc));
- }
- });
- }
- public void addUnReadMessageObserver(IUnReadMessageObserver unReadMessageObserver) {
- V2TIMManager.getConversationManager().addConversationListener(unReadMessageObserver);
- }
- public void removeUnReadMessageObserver(IUnReadMessageObserver unReadMessageObserver) {
- V2TIMManager.getConversationManager().removeConversationListener(unReadMessageObserver);
- }
- public void sendImageMessage(String targetId, boolean isGroup, String imgPath, V2TIMSendCallback<V2TIMMessage> sendCallback) {
- if (!TextUtils.isEmpty(targetId)) {
- V2TIMMessage imageMessage = V2TIMManager.getMessageManager().createImageMessage(imgPath);
- // 发送消息
- sendMessage(imageMessage,targetId,isGroup,sendCallback);
- }
- }
- public void sendMessage(V2TIMMessage message,String targetId, boolean isGroup,V2TIMSendCallback<V2TIMMessage> sendCallback){
- V2TIMManager.getMessageManager().sendMessage(message, isGroup ? null : targetId, isGroup ? targetId : null, V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, null, sendCallback);
- }
- private void goLogin() {
- ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
- .withString(UserConstants.PHONE_NUM_KEY, UserHelper.getUserPhone())
- .navigation();
- }
- }
|