From b126387fcf96cfcc50dc88beeb5e6fccfbab983a Mon Sep 17 00:00:00 2001 From: willem Date: Sat, 9 Oct 2021 21:06:32 +0800 Subject: [PATCH] change message notify --- ios/Classes/CommonUtil.swift | 18 +++---- ios/Classes/Module/GroupManager.swift | 64 ++++++++++++------------- ios/Classes/Module/MessageManager.swift | 37 +++++++------- 3 files changed, 54 insertions(+), 65 deletions(-) diff --git a/ios/Classes/CommonUtil.swift b/ios/Classes/CommonUtil.swift index 0567b76..3529b6c 100644 --- a/ios/Classes/CommonUtil.swift +++ b/ios/Classes/CommonUtil.swift @@ -5,18 +5,12 @@ import Foundation public class CommonUtil { public static func emitEvent(channel: FlutterMethodChannel, method: String, type: String, errCode: Int?, errMsg: String?, data: Any?){ - DispatchQueue.main.async { - let res: NSMutableDictionary = NSMutableDictionary(capacity: 0) - res.setValue(type, forKey: "type") - if (data != nil) { - res.setValue(data, forKey: "data"); - } - if (nil != errCode) { - res.setValue(errCode, forKey: "errCode"); - } - if (nil != errMsg) { - res.setValue(errMsg, forKey: "errMsg"); - } + safeMainAsync { + var res: [String: Any] = [:] + res["type"] = type + res["data"] = data + res["errCode"] = errCode + res["errMsg"] = errMsg print("native call flutter { method: \(method) type: \(type) }") channel.invokeMethod(method, arguments: res) } diff --git a/ios/Classes/Module/GroupManager.swift b/ios/Classes/Module/GroupManager.swift index 3de5ae8..5357fe8 100644 --- a/ios/Classes/Module/GroupManager.swift +++ b/ios/Classes/Module/GroupManager.swift @@ -118,7 +118,7 @@ public class GroupManager: BaseServiceManager { } } -public class GroupListener:NSObject,Open_im_sdkOnGroupListenerProtocol { +public class GroupListener: NSObject, Open_im_sdkOnGroupListenerProtocol { private let channel:FlutterMethodChannel @@ -127,11 +127,11 @@ public class GroupListener:NSObject,Open_im_sdkOnGroupListenerProtocol { } public func onApplicationProcessed(_ groupId: String?, opUser: String?, agreeOrReject AgreeOrReject: Int32, opReason: String?) { - let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) - values.setValue(groupId, forKey: "groupId") - values.setValue(opUser, forKey: "opUser") - values.setValue(AgreeOrReject, forKey: "agreeOrReject") - values.setValue(opReason, forKey: "opReason") + var values: [String: Any] = [:] + values["groupId"] = groupId + values["opUser"] = opUser + values["agreeOrReject"] = AgreeOrReject + values["opReason"] = opReason CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onApplicationProcessed", errCode: nil, errMsg: nil, data: values) } @@ -145,53 +145,53 @@ public class GroupListener:NSObject,Open_im_sdkOnGroupListenerProtocol { // } public func onGroupCreated(_ s: String?) { - let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) - values.setValue(s, forKey: "groupId") + var values: [String: Any] = [:] + values["groupId"] = s CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onGroupCreated", errCode: nil, errMsg: nil, data: values) } - public func onGroupInfoChanged(_ s: String?,groupInfo s1: String?) { - let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) - values.setValue(s, forKey: "groupId") - values.setValue(s1, forKey: "groupInfo") + public func onGroupInfoChanged(_ s: String?, groupInfo s1: String?) { + var values: [String: Any] = [:] + values["groupId"] = s + values["groupInfo"] = s1 CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onGroupInfoChanged", errCode: nil, errMsg: nil, data: values) } - public func onMemberEnter(_ s: String?,memberList s1: String?) { - let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) - values.setValue(s, forKey: "groupId") - values.setValue(s1, forKey: "memberList") + public func onMemberEnter(_ s: String?, memberList s1: String?) { + var values: [String: Any] = [:] + values["groupId"] = s + values["memberList"] = s1 CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onMemberEnter", errCode: nil, errMsg: nil, data: values) } - public func onMemberInvited(_ s: String?,opUser s1: String?,memberList s2: String?) { - let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) - values.setValue(s, forKey: "groupId") - values.setValue(s1, forKey: "opUser") - values.setValue(s2, forKey: "memberList") + public func onMemberInvited(_ s: String?,opUser s1: String?, memberList s2: String?) { + var values: [String: Any] = [:] + values["groupId"] = s + values["opUser"] = s1 + values["memberList"] = s2 CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onMemberInvited", errCode: nil, errMsg: nil, data: values) } public func onMemberKicked(_ s: String?,opUser s1: String?,memberList s2: String?) { - let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) - values.setValue(s, forKey: "groupId") - values.setValue(s1, forKey: "opUser") - values.setValue(s2, forKey: "memberList") + var values: [String: Any] = [:] + values["groupId"] = s + values["opUser"] = s1 + values["memberList"] = s2 CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onMemberKicked", errCode: nil, errMsg: nil, data: values) } public func onMemberLeave(_ s: String?,member s1: String?) { - let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) - values.setValue(s, forKey: "groupId") - values.setValue(s1, forKey: "member") + var values: [String: Any] = [:] + values["groupId"] = s + values["member"] = s1 CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onMemberLeave", errCode: nil, errMsg: nil, data: values) } public func onReceiveJoinApplication(_ s: String?,member s1: String?,opReason s2: String?) { - let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) - values.setValue(s, forKey: "groupId") - values.setValue(s1, forKey: "member") - values.setValue(s2, forKey: "opReason") + var values: [String: Any] = [:] + values["groupId"] = s + values["member"] = s1 + values["opReason"] = s2 CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onReceiveJoinApplication", errCode: nil, errMsg: nil, data: values) } diff --git a/ios/Classes/Module/MessageManager.swift b/ios/Classes/Module/MessageManager.swift index 03423f9..8a35d2c 100644 --- a/ios/Classes/Module/MessageManager.swift +++ b/ios/Classes/Module/MessageManager.swift @@ -10,7 +10,7 @@ import OpenIMCore public class MessageManager: BaseServiceManager { private let KEY_ID: String = "id" - private let listeners: NSMutableDictionary = NSMutableDictionary(capacity: 0) + private var listeners: [String: AdvancedMsgListener] = [:] public override func registerHandlers() { super.registerHandlers() @@ -45,13 +45,10 @@ public class MessageManager: BaseServiceManager { } func addAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - let d = methodCall.arguments as! NSDictionary - let key = d.value(forKey: KEY_ID) as! String - if !listeners.allKeys.contains(where: {($0 as! String).compare(key) == .orderedSame}) { + let key = methodCall[string: KEY_ID] + if listeners[key] == nil { let lis = AdvancedMsgListener(channel: channel, id: key) - let k = methodCall.arguments as! NSDictionary - let s = k.value(forKey: KEY_ID) as! String - listeners.setValue(lis, forKey: s) + listeners[key] = lis Open_im_sdkAddAdvancedMsgListener(lis) print("=================add msg listener======\n\(lis)"); } @@ -59,11 +56,9 @@ public class MessageManager: BaseServiceManager { } func removeAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - let k = methodCall.arguments as! NSDictionary - let s = k.value(forKey: KEY_ID) as! String - if listeners.allKeys.contains(where: {($0 as! String).compare(s) == .orderedSame}) { - let lis = listeners.value(forKey: s) as! AdvancedMsgListener - listeners.removeObject(forKey: s) + let key = methodCall[string: KEY_ID] + if let lis = listeners[key] { + listeners[key] = nil Open_im_sdkRemoveAdvancedMsgListener(lis) } callBack(result) @@ -188,12 +183,12 @@ public class MessageManager: BaseServiceManager { callBack(result) } - public class SendMsgProgressListener:NSObject, Open_im_sdkSendMsgCallBackProtocol { + public class SendMsgProgressListener: NSObject, Open_im_sdkSendMsgCallBackProtocol { private let channel: FlutterMethodChannel private var result: FlutterResult? private var call: FlutterMethodCall? - private let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + private var values: [String: Any] = [:] init(channel: FlutterMethodChannel) { self.channel = channel @@ -217,8 +212,8 @@ public class MessageManager: BaseServiceManager { return } print("=================onProgress============\nprogress:\(progress)"); - values.setValue(call[string: "clientMsgID"], forKey: "clientMsgID") - values.setValue(progress, forKey: "progress") + values["clientMsgID"] = call[string: "clientMsgID"] + values["progress"] = progress CommonUtil.emitEvent(channel: channel, method: "msgSendProgressListener", type: "onProgress", errCode: nil, errMsg: nil, data: values) } @@ -231,25 +226,25 @@ public class MessageManager: BaseServiceManager { public class AdvancedMsgListener: NSObject, Open_im_sdkOnAdvancedMsgListenerProtocol { private let channel: FlutterMethodChannel - private let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + private var values: [String: Any] = [:] init(channel: FlutterMethodChannel, id: String) { self.channel = channel - values.setValue(id, forKey: "id") + values["id"] = id } public func onRecvC2CReadReceipt(_ msgReceiptList: String?) { - values.setValue(msgReceiptList, forKey: "message") + values["haveReadMessage"] = msgReceiptList CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvC2CReadReceipt", errCode: nil, errMsg: nil, data: values) } public func onRecvMessageRevoked(_ msgId: String?) { - values.setValue(msgId, forKey: "message") + values["revokedMessage"] = msgId CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageRevoked", errCode: nil, errMsg: nil, data: values) } public func onRecvNewMessage(_ message: String?) { - values.setValue(message, forKey: "message") + values["newMessage"] = message CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvNewMessage", errCode: nil, errMsg: nil, data: values) } }