Browse Source

feat(im): 启用调试模式并优化消息处理逻辑

- 在初始化时启用 SDK 的 debugMode 选项
- 将 onCmdMessagesReceived 回调替换为 onMessageContentChanged
- 移除对 CMD 消息的处理逻辑及相关废弃代码
- 简化消息内容变更时的日志记录方式
- 删除未使用的消息状态变更通知方法
- 清理冗余的消息已读、已送达及撤回处理函数
ios
Jolie 3 months ago
parent
commit
d6224ab067
1 changed files with 4 additions and 158 deletions
  1. 162
      lib/im/im_manager.dart

162
lib/im/im_manager.dart

@ -51,6 +51,7 @@ class IMManager {
appKey: appKey,
autoLogin: false,
acceptInvitationAlways: false,
debugMode: true
);
// SDK
@ -130,15 +131,11 @@ class IMManager {
// ChatController
_notifyChatControllers(messages);
},
onCmdMessagesReceived: (cmdMessages) {
onMessageContentChanged: (EMMessage message, String operatorId, int operationTime){
if (Get.isLogEnable) {
Get.log('📨 [IMManager] 收到 ${cmdMessages.length} 条CMD消息');
Get.log('📨 [IMManager] 消息内容已修改: ${message.localTime}');
}
// CMD消息
for (var msg in cmdMessages) {
_handleCmdMessage(msg);
}
},
}
),
);
EMClient.getInstance.chatManager.addMessageEvent(_chatHandlerKey, ChatMessageEvent(
@ -1194,157 +1191,6 @@ class IMManager {
}
}
/// CMD消息
void _handleCmdMessage(EMMessage cmdMessage) {
try {
// CMD消息
if (Get.isLogEnable) {
Get.log('处理CMD消息: ${cmdMessage.msgId}');
}
} catch (e) {
if (Get.isLogEnable) {
Get.log('处理CMD消息失败: $e');
}
}
}
// SDK支持更多回调时可以使用
// SDK的EMChatEventHandler可能不支持这些回调
/*
///
void _notifyMessageRead(List<EMMessage> messages, String from, String to) {
try {
// ChatController
final controller = _activeChatControllers[from];
if (controller != null) {
// TODO: ChatController
if (Get.isLogEnable) {
Get.log('通知消息已读: $from');
}
}
} catch (e) {
if (Get.isLogEnable) {
Get.log('通知消息已读失败: $e');
}
}
}
///
void _notifyMessageDelivered(List<EMMessage> messages, String to) {
try {
// ChatController
for (var message in messages) {
final targetId = message.to;
if (targetId != null) {
final controller = _activeChatControllers[targetId];
if (controller != null) {
// TODO: ChatController
if (Get.isLogEnable) {
Get.log('通知消息已送达: $targetId');
}
}
}
}
} catch (e) {
if (Get.isLogEnable) {
Get.log('通知消息已送达失败: $e');
}
}
}
///
void _notifyMessageRecalled(List<EMMessage> messages) {
try {
// ChatController
for (var message in messages) {
final fromId = message.from;
final toId = message.to;
// ChatController
if (fromId != null) {
final controller = _activeChatControllers[fromId];
if (controller != null) {
// TODO: ChatController
if (Get.isLogEnable) {
Get.log('通知消息撤回(发送方): $fromId');
}
}
}
// ChatController
if (toId != null) {
final controller = _activeChatControllers[toId];
if (controller != null) {
// TODO: ChatController
if (Get.isLogEnable) {
Get.log('通知消息撤回(接收方): $toId');
}
}
}
}
//
_refreshConversationList();
} catch (e) {
if (Get.isLogEnable) {
Get.log('通知消息撤回失败: $e');
}
}
}
///
void _notifyMessageStatusChanged(EMMessage message, MessageStatus status, EMError? error) {
try {
final targetId = message.to;
if (targetId != null) {
final controller = _activeChatControllers[targetId];
if (controller != null) {
//
final index = controller.messages.indexWhere((msg) => msg.msgId == message.msgId);
if (index != -1) {
//
final updatedMessage = message;
controller.messages[index] = updatedMessage;
controller.update();
if (Get.isLogEnable) {
final errorCode = error?.code;
Get.log('✅ [IMManager] 已通知ChatController更新消息状态: $targetId, status=$status, errorCode=$errorCode');
}
} else {
// ID可能改变的情况
if (message.body.type == MessageType.TXT) {
final textBody = message.body as EMTextMessageBody;
final content = textBody.content;
final contentIndex = controller.messages.indexWhere((msg) =>
msg.body.type == MessageType.TXT &&
(msg.body as EMTextMessageBody).content == content &&
msg.direction == MessageDirection.SEND &&
msg.status == MessageStatus.PROGRESS
);
if (contentIndex != -1) {
//
final updatedMessage = message;
controller.messages[contentIndex] = updatedMessage;
controller.update();
if (Get.isLogEnable) {
final errorCode = error?.code;
Get.log('✅ [IMManager] 已通过内容匹配更新消息状态: $targetId, status=$status, errorCode=$errorCode');
}
}
}
}
}
}
} catch (e) {
if (Get.isLogEnable) {
Get.log('通知消息状态变更失败: $e');
}
}
}
*/
///
Future<bool> recallMessage(EMMessage message) async {
try {

Loading…
Cancel
Save