From b8a51374a3b01039a62e5cb96fda5dd80f890712 Mon Sep 17 00:00:00 2001 From: hrxiang Date: Fri, 25 Nov 2022 17:03:50 +0800 Subject: [PATCH] Update --- CHANGELOG.md | 2 ++ android/build.gradle | 2 +- .../listener/OnSignalingListener.java | 5 +++++ .../manager/SignalingManager.java | 8 ++++++++ example/pubspec.lock | 2 +- ios/Classes/Module/ConversationManager.swift | 5 +++++ ios/Classes/Module/SignalingManager.swift | 10 ++++++++++ lib/src/listener/signaling_listener.dart | 6 ++++++ lib/src/manager/im_manager.dart | 8 ++++++++ lib/src/manager/im_message_manager.dart | 12 ++++++------ lib/src/manager/im_signaling_manager.dart | 16 ++++++++++++++++ lib/src/models/message.dart | 3 ++- lib/src/models/signaling_info.dart | 19 +++++++++++++++++++ 13 files changed, 89 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8aa84fa..69b30f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ - Fix bug - Add setOneConversationBurnDuration method for ConversationManager +- Add signalingSendCustomSignal method for SignalingManager +- Add onReceiveCustomSignal listener for OnSignalingListener - Add burnDuration field for ConversationInfo - Add burnDuration field for AttachedInfoElem diff --git a/android/build.gradle b/android/build.gradle index a700d05..e737279 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -34,5 +34,5 @@ android { } } dependencies { - api 'io.openim:core-sdk:2.3.4-rc4@aar' + api 'io.openim:core-sdk:2.3.4-rc6@aar' } \ No newline at end of file diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnSignalingListener.java b/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnSignalingListener.java index 1ee2db5..b70384b 100644 --- a/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnSignalingListener.java +++ b/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnSignalingListener.java @@ -34,6 +34,11 @@ public class OnSignalingListener implements open_im_sdk_callback.OnSignalingList CommonUtil.emitEvent("signalingListener", "onInviteeRejectedByOtherDevice", s); } + @Override + public void onReceiveCustomSignal(String s) { + CommonUtil.emitEvent("signalingListener", "onReceiveCustomSignal", s); + } + @Override public void onReceiveNewInvitation(String s) { CommonUtil.emitEvent("signalingListener", "onReceiveNewInvitation", s); 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 0eb443c..9b691c6 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 @@ -114,4 +114,12 @@ public class SignalingManager extends BaseManager { value(methodCall, "operationID"), value(methodCall, "roomID")); } + + public void signalingSendCustomSignal(MethodCall methodCall, MethodChannel.Result result) { + Open_im_sdk.signalingSendCustomSignal( + new OnBaseListener(result, methodCall), + value(methodCall, "operationID"), + value(methodCall, "customInfo"), + value(methodCall, "roomID")); + } } diff --git a/example/pubspec.lock b/example/pubspec.lock index 0eab6e1..a70a610 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -61,7 +61,7 @@ packages: path: ".." relative: true source: path - version: "2.3.4+1" + version: "2.3.4+5" flutter_test: dependency: "direct dev" description: flutter diff --git a/ios/Classes/Module/ConversationManager.swift b/ios/Classes/Module/ConversationManager.swift index 76e5286..e30d6d9 100644 --- a/ios/Classes/Module/ConversationManager.swift +++ b/ios/Classes/Module/ConversationManager.swift @@ -25,6 +25,7 @@ public class ConversationManager: BaseServiceManager { self["resetConversationGroupAtType"] = resetConversationGroupAtType self["getAtAllTag"] = getAtAllTag self["setGlobalRecvMessageOpt"] = setGlobalRecvMessageOpt + self["setOneConversationBurnDuration"] = setOneConversationBurnDuration } func setConversationListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -108,6 +109,10 @@ public class ConversationManager: BaseServiceManager { func setGlobalRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ Open_im_sdkSetGlobalRecvMessageOpt(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int: "status"]) } + + func setOneConversationBurnDuration(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ + Open_im_sdkSetOneConversationBurnDuration(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[int32: "burnDuration"]) + } } diff --git a/ios/Classes/Module/SignalingManager.swift b/ios/Classes/Module/SignalingManager.swift index 71393e1..d5febff 100644 --- a/ios/Classes/Module/SignalingManager.swift +++ b/ios/Classes/Module/SignalingManager.swift @@ -20,6 +20,7 @@ public class SignalingManager: BaseServiceManager { self["signalingOperateStream"] = signalingOperateStream self["signalingGetMeetings"] = signalingGetMeetings self["signalingCloseRoom"] = signalingCloseRoom + self["signalingSendCustomSignal"] = signalingSendCustomSignal } func setSignalingListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -82,8 +83,13 @@ public class SignalingManager: BaseServiceManager { func signalingCloseRoom(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ Open_im_sdkSignalingCloseRoom(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "roomID"]) } + + func signalingSendCustomSignal(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ + Open_im_sdkSignalingSendCustomSignal(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "customInfo"], methodCall[string: "roomID"]) + } } public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListenerProtocol { + private let channel:FlutterMethodChannel @@ -135,4 +141,8 @@ public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListene CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onStreamChange", errCode: nil, errMsg: nil, data: s) } + public func onReceiveCustomSignal(_ s: String?) { + CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onReceiveCustomSignal", errCode: nil, errMsg: nil, data: s) + } + } diff --git a/lib/src/listener/signaling_listener.dart b/lib/src/listener/signaling_listener.dart index aca9ebb..05d805b 100644 --- a/lib/src/listener/signaling_listener.dart +++ b/lib/src/listener/signaling_listener.dart @@ -13,6 +13,7 @@ class OnSignalingListener { final Function(RoomCallingInfo info)? onRoomParticipantConnected; final Function(RoomCallingInfo info)? onRoomParticipantDisconnected; final Function(MeetingStreamEvent event)? onMeetingStreamChanged; + final Function(CustomSignaling info)? onReceiveCustomSignal; OnSignalingListener({ this.onInvitationCancelled, @@ -26,6 +27,7 @@ class OnSignalingListener { this.onRoomParticipantConnected, this.onRoomParticipantDisconnected, this.onMeetingStreamChanged, + this.onReceiveCustomSignal, }); /// 被邀请者收到:邀请者取消音视频通话 @@ -79,4 +81,8 @@ class OnSignalingListener { void streamChangedEvent(MeetingStreamEvent event) { onMeetingStreamChanged?.call(event); } + + void receiveCustomSignal(CustomSignaling info) { + onReceiveCustomSignal?.call(info); + } } diff --git a/lib/src/manager/im_manager.dart b/lib/src/manager/im_manager.dart index 1c5b7de..663e6be 100644 --- a/lib/src/manager/im_manager.dart +++ b/lib/src/manager/im_manager.dart @@ -254,6 +254,9 @@ class IMManager { info = Utils.toObj(data, (map) => MeetingStreamEvent.fromJson(map)); break; + case 'onReceiveCustomSignal': + info = Utils.toObj(data, (map) => CustomSignaling.fromJson(map)); + break; default: info = Utils.toObj(data, (map) => SignalingInfo.fromJson(map)); break; @@ -292,6 +295,9 @@ class IMManager { case 'onStreamChange': signalingManager.listener.streamChangedEvent(info); break; + case 'onReceiveCustomSignal': + signalingManager.listener.receiveCustomSignal(info); + break; } } else if (call.method == ListenerType.workMomentsListener) { String type = call.arguments['type']; @@ -332,6 +338,7 @@ class IMManager { int logLevel = 6, String objectStorage = 'cos', String? encryptionKey, + bool enabledEncryption = false, String? operationID, }) { this._connectListener = listener; @@ -347,6 +354,7 @@ class IMManager { "log_level": logLevel, "object_storage": objectStorage, "encryption_key": encryptionKey, + "is_need_encryption": enabledEncryption, "operationID": Utils.checkOperationID(operationID), }, )); diff --git a/lib/src/manager/im_message_manager.dart b/lib/src/manager/im_message_manager.dart index 8033f8f..87cddaa 100644 --- a/lib/src/manager/im_message_manager.dart +++ b/lib/src/manager/im_message_manager.dart @@ -823,9 +823,9 @@ class MessageManager { .invokeMethod( 'createImageMessageByURL', _buildParam({ - 'sourcePicture': sourcePicture, - 'bigPicture': bigPicture, - 'snapshotPicture': snapshotPicture, + 'sourcePicture': sourcePicture.toJson(), + 'bigPicture': bigPicture.toJson(), + 'snapshotPicture': snapshotPicture.toJson(), "operationID": Utils.checkOperationID(operationID), }), ) @@ -840,7 +840,7 @@ class MessageManager { .invokeMethod( 'createSoundMessageByURL', _buildParam({ - 'soundElem': soundElem, + 'soundElem': soundElem.toJson(), "operationID": Utils.checkOperationID(operationID), }), ) @@ -855,7 +855,7 @@ class MessageManager { .invokeMethod( 'createVideoMessageByURL', _buildParam({ - 'videoElem': videoElem, + 'videoElem': videoElem.toJson(), "operationID": Utils.checkOperationID(operationID), })) .then((value) => Utils.toObj(value, (map) => Message.fromJson(map))); @@ -869,7 +869,7 @@ class MessageManager { .invokeMethod( 'createFileMessageByURL', _buildParam({ - 'fileElem': fileElem, + 'fileElem': fileElem.toJson(), "operationID": Utils.checkOperationID(operationID), })) .then((value) => Utils.toObj(value, (map) => Message.fromJson(map))); diff --git a/lib/src/manager/im_signaling_manager.dart b/lib/src/manager/im_signaling_manager.dart index ce59f5f..534fb72 100644 --- a/lib/src/manager/im_signaling_manager.dart +++ b/lib/src/manager/im_signaling_manager.dart @@ -281,6 +281,22 @@ class SignalingManager { 'operationID': Utils.checkOperationID(operationID), })); + /// 自定义信令 + /// [roomID] 会议ID + /// [customInfo] 自定义信令 + Future signalingSendCustomSignal({ + required String roomID, + required String customInfo, + String? operationID, + }) => + _channel.invokeMethod( + 'signalingSendCustomSignal', + _buildParam({ + 'roomID': roomID, + 'customInfo': customInfo, + '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 6ea4423..f178627 100644 --- a/lib/src/models/message.dart +++ b/lib/src/models/message.dart @@ -790,7 +790,8 @@ class AttachedInfoElem { /// 已读时间 int? hasReadTime; - /// 私聊消息保留时长 + /// 阅读时长 s + /// 即从hasReadTime时间算起,超过了burnDuration秒触发销毁 int? burnDuration; /// 离线不发送推送 diff --git a/lib/src/models/signaling_info.dart b/lib/src/models/signaling_info.dart index d0c4849..f2e4306 100644 --- a/lib/src/models/signaling_info.dart +++ b/lib/src/models/signaling_info.dart @@ -224,3 +224,22 @@ class Participant { return data; } } + +class CustomSignaling { + String? roomID; + String? customInfo; + + CustomSignaling({this.roomID, this.customInfo}); + + CustomSignaling.fromJson(Map json) { + roomID = json['roomID']; + customInfo = json['customInfo']; + } + + Map toJson() { + final data = Map(); + data['roomID'] = roomID; + data['customInfo'] = customInfo; + return data; + } +}