diff --git a/CHANGELOG.md b/CHANGELOG.md index b8d45b7..e744116 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ 1.Fix some one crash
2.New add signaling function
-3.Delete getConversationRecvMessageOpt +3.New add group have read receipt ## 2.0.0+1 diff --git a/android/build.gradle b/android/build.gradle index 5798e14..cd885cd 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -41,5 +41,5 @@ android { } } dependencies { - implementation 'io.openim:client-sdk:2.0.14@aar' + implementation 'io.openim:client-sdk:2.0.15@aar' } \ No newline at end of file diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java b/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java index 2259b53..6cac74f 100644 --- a/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java +++ b/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java @@ -156,6 +156,15 @@ public class MessageManager extends BaseManager { ); } + public void markGroupMessageAsRead(MethodCall methodCall, MethodChannel.Result result) { + Open_im_sdk.markGroupMessageAsRead( + new OnBaseListener(result), + value(methodCall, "operationID"), + value(methodCall, "groupID"), + jsonValue(methodCall, "messageIDList") + ); + } + public void typingStatusUpdate(MethodCall methodCall, MethodChannel.Result result) { Open_im_sdk.typingStatusUpdate( new OnBaseListener(result), diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/manager/SignalingManager.java b/android/src/main/java/io/openim/flutter_openim_sdk/manager/SignalingManager.java index 40516bf..966ca75 100644 --- a/android/src/main/java/io/openim/flutter_openim_sdk/manager/SignalingManager.java +++ b/android/src/main/java/io/openim/flutter_openim_sdk/manager/SignalingManager.java @@ -46,4 +46,11 @@ public class SignalingManager extends BaseManager { value(methodCall, "operationID"), jsonValue(methodCall, "signalingInfo")); } + + public void signalingHungUp(MethodCall methodCall, MethodChannel.Result result) { + Open_im_sdk.signalingHungUp( + new OnBaseListener(result), + value(methodCall, "operationID"), + jsonValue(methodCall, "signalingInfo")); + } } diff --git a/ios/Classes/Module/MessageManager.swift b/ios/Classes/Module/MessageManager.swift index 0d7b000..9743441 100644 --- a/ios/Classes/Module/MessageManager.swift +++ b/ios/Classes/Module/MessageManager.swift @@ -17,6 +17,7 @@ public class MessageManager: BaseServiceManager { self["insertGroupMessageToLocalStorage"] = insertGroupMessageToLocalStorage // self["findMessages"] = findMessages self["markC2CMessageAsRead"] = markC2CMessageAsRead + self["markGroupMessageAsRead"] = markGroupMessageAsRead self["typingStatusUpdate"] = typingStatusUpdate self["createTextMessage"] = createTextMessage self["createTextAtMessage"] = createTextAtMessage @@ -86,7 +87,11 @@ public class MessageManager: BaseServiceManager { func markC2CMessageAsRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ Open_im_sdkMarkC2CMessageAsRead(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"], methodCall[jsonString: "messageIDList"]) } - + + func markGroupMessageAsRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ + Open_im_sdkMarkGroupMessageAsRead(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[jsonString: "messageIDList"]) + } + func typingStatusUpdate(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ Open_im_sdkTypingStatusUpdate(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"], methodCall[string: "msgTip"]) } diff --git a/ios/Classes/Module/SignalingManager.swift b/ios/Classes/Module/SignalingManager.swift index 3dd0f77..7daf714 100644 --- a/ios/Classes/Module/SignalingManager.swift +++ b/ios/Classes/Module/SignalingManager.swift @@ -11,6 +11,7 @@ public class SignalingManager: BaseServiceManager { self["signalingAccept"] = signalingAccept self["signalingReject"] = signalingReject self["signalingCancel"] = signalingCancel + self["signalingHungUp"] = signalingHungUp } func setSignalingListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -37,7 +38,10 @@ public class SignalingManager: BaseServiceManager { func signalingCancel(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ Open_im_sdkSignalingCancel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "signalingInfo"]) } - + + func signalingHungUp(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ + Open_im_sdkSignalingHungUp(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "signalingInfo"]) + } } public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListenerProtocol { diff --git a/ios/Framework/OpenIMCore.framework/OpenIMCore b/ios/Framework/OpenIMCore.framework/OpenIMCore index 66777b3..598e2d5 100644 Binary files a/ios/Framework/OpenIMCore.framework/OpenIMCore and b/ios/Framework/OpenIMCore.framework/OpenIMCore differ diff --git a/lib/src/enum/message_type.dart b/lib/src/enum/message_type.dart index 8a44968..d393e06 100644 --- a/lib/src/enum/message_type.dart +++ b/lib/src/enum/message_type.dart @@ -19,24 +19,40 @@ class MessageType { static const custom_face = 115; /// - static const accept_friend = 201; - static const add_friend = 202; - static const refuse_friend_application = 203; - static const set_self_info = 204; - static const revoke_message = 205; - static const c2c_message_as_read = 206; + static const notificationBegin = 1000; + static const friendNotificationBegin = 1200; - static const kick_online = 303; + static const friendApplicationApprovedNotification = 1201; + static const friendApplicationRejectedNotification = 1202; + static const friendApplicationNotification = 1203; + static const friendAddedNotification = 1204; + static const friendDeletedNotification = 1205; + static const friendRemarkSetNotification = 1206; + static const blackAddedNotification = 1207; + static const blackDeletedNotification = 1208; + static const friendNotificationEnd = 1299; + static const conversationChangeNotification = 1300; - /// - static const transfer_group_owner = 501; - static const create_group = 502; - // static const create_group = 503; - static const join_group = 504; - static const quit_group = 505; - static const set_group_info = 506; - static const accept_group_application = 507; - static const refuse_group_application = 508; - static const kick_group_member = 509; - static const invited_user_to_group = 510; + static const userNotificationBegin = 1301; + static const userInfoUpdatedNotification = 1303; + static const userNotificationEnd = 1399; + + static const groupNotificationBegin = 1500; + + static const groupCreatedNotification = 1501; + static const groupInfoSetNotification = 1502; + static const joinGroupApplicationNotification = 1503; + static const memberQuitNotification = 1504; + static const groupApplicationAcceptedNotification = 1505; + static const groupApplicationRejectedNotification = 1506; + static const groupOwnerTransferredNotification = 1507; + static const memberKickedNotification = 1508; + static const memberInvitedNotification = 1509; + static const memberEnterNotification = 1510; + static const groupNotificationEnd = 1599; + + static const signalingNotificationBegin = 1600; + static const signalingNotification = 1601; + static const signalingNotificationEnd = 1699; + static const notificationEnd = 2000; } diff --git a/lib/src/manager/im_message_manager.dart b/lib/src/manager/im_message_manager.dart index 26ed5e8..37eed17 100644 --- a/lib/src/manager/im_message_manager.dart +++ b/lib/src/manager/im_message_manager.dart @@ -162,6 +162,21 @@ class MessageManager { "operationID": Utils.checkOperationID(operationID), })); + /// Mark group message as read + /// 标记群聊消息已读 + Future markGroupMessageAsRead({ + required String groupID, + required List messageIDList, + String? operationID, + }) => + _channel.invokeMethod( + 'markGroupMessageAsRead', + _buildParam({ + "messageIDList": messageIDList, + "groupID": groupID, + "operationID": Utils.checkOperationID(operationID), + })); + /// Typing /// 正在输入提示 Future typingStatusUpdate({ diff --git a/lib/src/manager/im_signaling_manager.dart b/lib/src/manager/im_signaling_manager.dart index 1349243..2911cbf 100644 --- a/lib/src/manager/im_signaling_manager.dart +++ b/lib/src/manager/im_signaling_manager.dart @@ -83,6 +83,18 @@ class SignalingManager { 'operationID': Utils.checkOperationID(operationID), })); + /// 挂断 + Future signalingHungUp({ + required SignalingInfo info, + String? operationID, + }) => + _channel.invokeMethod( + 'signalingHungUp', + _buildParam({ + 'signalingInfo': info.toJson(), + 'operationID': Utils.checkOperationID(operationID), + })); + static Map _buildParam(Map param) { param["ManagerName"] = "signalingManager"; return param; diff --git a/lib/src/models/message.dart b/lib/src/models/message.dart index 4d5b382..f587a9f 100644 --- a/lib/src/models/message.dart +++ b/lib/src/models/message.dart @@ -37,6 +37,7 @@ class Message { MergeElem? mergeElem; NotificationElem? notificationElem; FaceElem? faceElem; + AttachedInfoElem? attachedInfoElem; Message({ this.clientMsgID, @@ -71,6 +72,7 @@ class Message { this.mergeElem, this.notificationElem, this.faceElem, + this.attachedInfoElem, }); Message.fromJson(Map json) { @@ -127,6 +129,9 @@ class Message { : null; faceElem = json['faceElem'] != null ? FaceElem.fromJson(json['faceElem']) : null; + attachedInfoElem = json['attachedInfoElem'] != null + ? AttachedInfoElem.fromJson(json['attachedInfoElem']) + : null; } Map toJson() { @@ -163,6 +168,7 @@ class Message { data['mergeElem'] = this.mergeElem?.toJson(); data['notificationElem'] = this.notificationElem?.toJson(); data['faceElem'] = this.faceElem?.toJson(); + data['attachedInfoElem'] = this.attachedInfoElem?.toJson(); return data; } @@ -209,6 +215,7 @@ class Message { mergeElem = message.mergeElem; notificationElem = message.notificationElem; faceElem = message.faceElem; + attachedInfoElem = message.attachedInfoElem; } } @@ -572,6 +579,45 @@ class FaceElem { } } +class AttachedInfoElem { + GroupHasReadInfo? groupHasReadInfo; + + AttachedInfoElem({this.groupHasReadInfo}); + + AttachedInfoElem.fromJson(Map json) { + groupHasReadInfo = json['groupHasReadInfo'] == null + ? null + : GroupHasReadInfo.fromJson(json['groupHasReadInfo']); + } + + Map toJson() { + final data = Map(); + data['groupHasReadInfo'] = this.groupHasReadInfo?.toJson(); + return data; + } +} + +class GroupHasReadInfo { + List? hasReadUserIDList; + int? hasReadCount; + + GroupHasReadInfo.fromJson(Map json) { + if (json['hasReadUserIDList'] == null) { + hasReadUserIDList = []; + } else { + hasReadUserIDList = (json['hasReadUserIDList'] as List).cast(); + } + hasReadCount = json['hasReadCount'] ?? 0; + } + + Map toJson() { + final data = Map(); + data['hasReadUserIDList'] = this.hasReadUserIDList; + data['hasReadCount'] = this.hasReadCount; + return data; + } +} + class ReadReceiptInfo { String? userID; String? groupID;