From 3b5f47c9f00fe108830ce79499c12c0f6b0d6877 Mon Sep 17 00:00:00 2001 From: hrxiang Date: Thu, 8 Dec 2022 12:05:21 +0800 Subject: [PATCH] V2.3.5 --- CHANGELOG.md | 7 +++++++ android/build.gradle | 2 +- .../listener/OnCustomBusinessListener.java | 10 ++++++++++ .../manager/MessageManager.java | 7 +++++++ example/pubspec.lock | 2 +- ios/Classes/Module/MessageManager.swift | 19 +++++++++++++++++++ ios/flutter_openim_sdk.podspec | 2 +- lib/flutter_openim_sdk.dart | 1 + lib/src/enum/listener_type.dart | 1 + .../listener/custom_business_listener.dart | 9 +++++++++ lib/src/manager/im_manager.dart | 13 +++++++++++++ lib/src/manager/im_message_manager.dart | 7 +++++++ pubspec.yaml | 2 +- 13 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 android/src/main/java/io/openim/flutter_openim_sdk/listener/OnCustomBusinessListener.java create mode 100644 lib/src/listener/custom_business_listener.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 2944594..3645081 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 2.3.5 + +- Add setCustomBusinessListener method for MessageManager +- Add OnCustomBusinessListener listener +- Add message encryption config +- Add message compression config + ## 2.3.4+6 - Add setAppBackgroundStatus method for IMManager diff --git a/android/build.gradle b/android/build.gradle index dc78385..6b6f5c8 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -34,5 +34,5 @@ android { } } dependencies { - api 'io.openim:core-sdk:2.3.4-rc7@aar' + api 'io.openim:core-sdk:2.3.5@aar' } \ No newline at end of file diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnCustomBusinessListener.java b/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnCustomBusinessListener.java new file mode 100644 index 0000000..97d0c4f --- /dev/null +++ b/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnCustomBusinessListener.java @@ -0,0 +1,10 @@ +package io.openim.flutter_openim_sdk.listener; + +import io.openim.flutter_openim_sdk.util.CommonUtil; + +public class OnCustomBusinessListener implements open_im_sdk_callback.OnCustomBusinessListener { + @Override + public void onRecvCustomBusinessMessage(String s) { + CommonUtil.emitEvent("customBusinessListener", "onRecvCustomBusinessMessage", s); + } +} 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 46885e4..2ce6ce6 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 @@ -4,6 +4,7 @@ import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.openim.flutter_openim_sdk.listener.OnAdvancedMsgListener; import io.openim.flutter_openim_sdk.listener.OnBaseListener; +import io.openim.flutter_openim_sdk.listener.OnCustomBusinessListener; import io.openim.flutter_openim_sdk.listener.OnMsgSendListener; import io.openim.flutter_openim_sdk.util.CommonUtil; import open_im_sdk.Open_im_sdk; @@ -477,4 +478,10 @@ public class MessageManager extends BaseManager { value(methodCall, "operationID"), jsonValue(methodCall, "fileElem"))); } + + public void setCustomBusinessListener(MethodCall methodCall, MethodChannel.Result result) { + Open_im_sdk.setCustomBusinessListener(new OnCustomBusinessListener()); + + result.success(null); + } } diff --git a/example/pubspec.lock b/example/pubspec.lock index a70a610..288cce6 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -61,7 +61,7 @@ packages: path: ".." relative: true source: path - version: "2.3.4+5" + version: "2.3.4+7" flutter_test: dependency: "direct dev" description: flutter diff --git a/ios/Classes/Module/MessageManager.swift b/ios/Classes/Module/MessageManager.swift index 327029b..a44ea63 100644 --- a/ios/Classes/Module/MessageManager.swift +++ b/ios/Classes/Module/MessageManager.swift @@ -54,6 +54,7 @@ public class MessageManager: BaseServiceManager { self["createSoundMessageByURL"] = createSoundMessageByURL self["createVideoMessageByURL"] = createVideoMessageByURL self["createFileMessageByURL"] = createFileMessageByURL + self["setCustomBusinessListener"] = setCustomBusinessListener } func setAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -267,6 +268,12 @@ public class MessageManager: BaseServiceManager { func createFileMessageByURL(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ callBack(result, Open_im_sdkCreateFileMessageByURL(methodCall[string: "operationID"], methodCall[jsonString: "fileElem"])) } + + func setCustomBusinessListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ + Open_im_sdkSetCustomBusinessListener(CustomBusinessListener(channel: channel)) + callBack(result) + } + } public class SendMsgProgressListener: NSObject, Open_im_sdk_callbackSendMsgCallBackProtocol { @@ -342,3 +349,15 @@ public class AdvancedMsgListener: NSObject, Open_im_sdk_callbackOnAdvancedMsgLis CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onNewRecvMessageRevoked", errCode: nil, errMsg: nil, data: values) } } + +public class CustomBusinessListener: NSObject, Open_im_sdk_callbackOnCustomBusinessListenerProtocol { + private let channel: FlutterMethodChannel + + init(channel: FlutterMethodChannel) { + self.channel = channel + } + + public func onRecvCustomBusinessMessage(_ s: String?) { + CommonUtil.emitEvent(channel: channel, method: "customBusinessListener", type: "onRecvCustomBusinessMessage", errCode: nil, errMsg: nil, data: s) + } +} diff --git a/ios/flutter_openim_sdk.podspec b/ios/flutter_openim_sdk.podspec index f49e558..7c1a3d4 100644 --- a/ios/flutter_openim_sdk.podspec +++ b/ios/flutter_openim_sdk.podspec @@ -17,7 +17,7 @@ A new Flutter project. s.dependency 'Flutter' s.platform = :ios, '9.0' - s.dependency 'OpenIMSDKCore','2.3.4' + s.dependency 'OpenIMSDKCore','2.3.5' s.static_framework = true # s.vendored_frameworks = 'Framework/*.framework' # Flutter.framework does not contain a i386 slice. diff --git a/lib/flutter_openim_sdk.dart b/lib/flutter_openim_sdk.dart index 1f29d02..a96351a 100644 --- a/lib/flutter_openim_sdk.dart +++ b/lib/flutter_openim_sdk.dart @@ -13,6 +13,7 @@ export 'src/enum/sdk_error_code.dart'; export 'src/listener/advanced_msg_listener.dart'; export 'src/listener/connect_listener.dart'; export 'src/listener/conversation_listener.dart'; +export 'src/listener/custom_business_listener.dart'; export 'src/listener/friendship_listener.dart'; export 'src/listener/group_listener.dart'; export 'src/listener/msg_send_progress_listener.dart'; diff --git a/lib/src/enum/listener_type.dart b/lib/src/enum/listener_type.dart index 4592dfe..327e41c 100644 --- a/lib/src/enum/listener_type.dart +++ b/lib/src/enum/listener_type.dart @@ -11,4 +11,5 @@ class ListenerType { static final msgSendProgressListener = "msgSendProgressListener"; static final workMomentsListener = "workMomentsListener"; static final organizationListener = "organizationListener"; + static final customBusinessListener = "customBusinessListener"; } diff --git a/lib/src/listener/custom_business_listener.dart b/lib/src/listener/custom_business_listener.dart new file mode 100644 index 0000000..8e1c01e --- /dev/null +++ b/lib/src/listener/custom_business_listener.dart @@ -0,0 +1,9 @@ +class OnCustomBusinessListener { + Function(String s)? onRecvCustomBusinessMessage; + + OnCustomBusinessListener({this.onRecvCustomBusinessMessage}); + + void recvCustomBusinessMessage(String s) { + onRecvCustomBusinessMessage?.call(s); + } +} diff --git a/lib/src/manager/im_manager.dart b/lib/src/manager/im_manager.dart index b0ba8cf..042bb57 100644 --- a/lib/src/manager/im_manager.dart +++ b/lib/src/manager/im_manager.dart @@ -313,6 +313,15 @@ class IMManager { organizationManager.listener.organizationUpdated(); break; } + } else if (call.method == ListenerType.customBusinessListener) { + String type = call.arguments['type']; + String data = call.arguments['data']; + switch (type) { + case 'onRecvCustomBusinessMessage': + messageManager.customBusinessListener?.onRecvCustomBusinessMessage + ?.call(data); + break; + } } } catch (err) { print( @@ -329,6 +338,8 @@ class IMManager { /// [dataDir] SDK数据库存储目录 /// [objectStorage] 存储对象 cos/minio /// [logLevel] 日志 1不打印 + /// [enabledEncryption] true:加密 + /// [enabledCompression] true:压缩 Future initSDK({ required int platform, required String apiAddr, @@ -339,6 +350,7 @@ class IMManager { String objectStorage = 'cos', String? encryptionKey, bool enabledEncryption = false, + bool enabledCompression = false, String? operationID, }) { this._connectListener = listener; @@ -355,6 +367,7 @@ class IMManager { "object_storage": objectStorage, "encryption_key": encryptionKey, "is_need_encryption": enabledEncryption, + "is_compression ": enabledCompression, "operationID": Utils.checkOperationID(operationID), }, )); diff --git a/lib/src/manager/im_message_manager.dart b/lib/src/manager/im_message_manager.dart index 87cddaa..1f306e7 100644 --- a/lib/src/manager/im_message_manager.dart +++ b/lib/src/manager/im_message_manager.dart @@ -7,6 +7,7 @@ class MessageManager { // List advancedMsgListeners = List.empty(growable: true); OnMsgSendProgressListener? msgSendProgressListener; late OnAdvancedMsgListener msgListener; + OnCustomBusinessListener? customBusinessListener; MessageManager(this._channel); @@ -874,6 +875,12 @@ class MessageManager { })) .then((value) => Utils.toObj(value, (map) => Message.fromJson(map))); + /// 用户资料改变监听 + Future setCustomBusinessListener(OnCustomBusinessListener listener) { + this.customBusinessListener = listener; + return _channel.invokeMethod('setCustomBusinessListener', _buildParam({})); + } + static Map _buildParam(Map param) { param["ManagerName"] = "messageManager"; return param; diff --git a/pubspec.yaml b/pubspec.yaml index 55cd9f8..42837c6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_openim_sdk description: An instant messaging plug-in that supports Android and IOS. And the server is also all open source. -version: 2.3.4+6 +version: 2.3.5 homepage: https://www.rentsoft.cn repository: https://github.com/OpenIMSDK/Open-IM-SDK-Flutter