add ios conversion method

This commit is contained in:
erlangzhang
2021-10-09 01:28:21 +08:00
parent 470bbb960e
commit f503ba50e3
9 changed files with 205 additions and 79 deletions

View File

@@ -179,6 +179,11 @@ public class CommonUtil {
let result: String = getParamValue(methodCall: methodCall, param: KEY_SINGLE_MESSAGE_USERID) as! String
return result
}
public static func getUserid(methodCall: FlutterMethodCall)->String{
let result: String = getParamValue(methodCall: methodCall, param: KEY_SINGLE_MESSAGE_USERID) as! String
return result
}
public static func getGroupMessageGroupid(methodCall: FlutterMethodCall)->String{
let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_MESSAGE_GROUPID) as! String
@@ -190,11 +195,16 @@ public class CommonUtil {
return result
}
public static func getFindMessageIds(methodCall: FlutterMethodCall)->String{
let result = getParamValue(methodCall: methodCall, param: KEY_FIND_MESSAGE_IDS) as AnyObject
public static func getMessageIds(methodCall: FlutterMethodCall)->String{
let result = getParamValue(methodCall: methodCall, param: KEY_MESSAGE_IDS) as AnyObject
let r = JsonUtil.toString(object: result)
return r
}
public static func getTyping(methodCall: FlutterMethodCall)->String {
let result: String = getParamValue(methodCall: methodCall, param: "typing") as! String
return result
}
public static func getConversationId(methodCall: FlutterMethodCall)->String{
let result: String = getParamValue(methodCall: methodCall, param: KEY_CONVERSATION_ID) as! String
@@ -303,7 +313,7 @@ public class CommonUtil {
//group chat
private static let KEY_GROUP_MESSAGE_GROUPID: String = "groupID";
// find message
private static let KEY_FIND_MESSAGE_IDS: String = "messageIDList";
private static let KEY_MESSAGE_IDS: String = "messageIDList";
// conversation
private static let KEY_CONVERSATION_ID: String = "conversationID";
private static let KEY_CONVERSATION_IDS: String = "conversationIDList";

View File

@@ -42,6 +42,23 @@ public class ConversationManager:NSObject{
func pinConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkPinConversation(CommonUtil.getConversationId(methodCall: methodCall), CommonUtil.isPinnedConversation(methodCall: methodCall), BaseImpl(result: result))
}
func markSingleMessageHasRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkMarkSingleMessageHasRead(BaseImpl(result: result), CommonUtil.getSingleMessageUserid(methodCall: methodCall))
}
func markGroupMessageHasRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkMarkGroupMessageHasRead(BaseImpl(result: result), CommonUtil.getGroupMessageGroupid(methodCall: methodCall))
}
func getTotalUnreadMsgCount(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkGetTotalUnreadMsgCount(BaseImpl(result: result))
}
func getConversationIDBySessionType(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
let conversationID = Open_im_sdkGetConversationIDBySessionType(CommonUtil.getConversationSourceId(methodCall: methodCall), CommonUtil.getConversationSessionType(methodCall: methodCall))
DispatchQueue.main.async { result(conversationID) }
}
}

View File

@@ -62,7 +62,6 @@ public class MessageManager:NSObject{
}
func deleteMessages(methodCall: FlutterMethodCall, result: FlutterResult){
}
func insertSingleMessageToLocalStorage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@@ -70,11 +69,18 @@ public class MessageManager:NSObject{
}
func findMessages(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkFindMessages(BaseImpl(result: result), CommonUtil.getFindMessageIds(methodCall: methodCall))
Open_im_sdkFindMessages(BaseImpl(result: result), CommonUtil.getMessageIds(methodCall: methodCall))
}
func markSingleMessageHasRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkMarkSingleMessageHasRead(BaseImpl(result: result), CommonUtil.getSingleMessageUserid(methodCall: methodCall))
func markC2CMessageAsRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkMarkC2CMessageAsRead(BaseImpl(result: result), CommonUtil.getUserid(methodCall: methodCall), CommonUtil.getMessageIds(methodCall: methodCall))
}
func typingStatusUpdate(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
let receiver = CommonUtil.getUserid(methodCall: methodCall)
let typing = CommonUtil.getTyping(methodCall: methodCall)
Open_im_sdkTypingStatusUpdate(receiver, typing)
DispatchQueue.main.async { result(nil) }
}
func markGroupMessageHasRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
@@ -121,76 +127,70 @@ public class MessageManager:NSObject{
DispatchQueue.main.async { result(prama) }
}
func getTotalUnreadMsgCount(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkGetTotalUnreadMsgCount(BaseImpl(result: result))
}
func forceSyncMsg(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkForceSyncMsg()
}
}
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)
init(channel: FlutterMethodChannel) {
self.channel = channel
}
func setResult(result: @escaping FlutterResult){
self.result = result
}
func setCall(methodCall: FlutterMethodCall){
self.call = methodCall
}
public func onError(_ errCode: Int, errMsg: String?) {
print("=================onError============\nerrcode:\(errCode),errMsg:\(errMsg!)");
DispatchQueue.main.async { self.result!(FlutterError(code: "\(errCode)", message: errMsg, details: nil)) }
}
public func onProgress(_ progress: Int) {
print("=================onProgress============\nprogress:\(progress)");
values.setValue(CommonUtil.getSendMessageClientMsgID(methodCall: self.call!), forKey: "clientMsgID")
values.setValue(progress, forKey: "progress")
CommonUtil.emitEvent(channel: channel, method: "msgSendProgressListener", type: "onProgress", errCode: nil, errMsg: nil, data: values)
}
public func onSuccess(_ data: String?) {
print("=================onSuccess============\nsuccess:\(data!)");
DispatchQueue.main.async { self.result!(data) }
}
}
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)
init(channel: FlutterMethodChannel) {
self.channel = channel
}
func setResult(result: @escaping FlutterResult){
self.result = result
}
func setCall(methodCall: FlutterMethodCall){
self.call = methodCall
}
public func onError(_ errCode: Int, errMsg: String?) {
print("=================onError============\nerrcode:\(errCode),errMsg:\(errMsg!)");
DispatchQueue.main.async { self.result!(FlutterError(code: "\(errCode)", message: errMsg, details: nil)) }
}
public func onProgress(_ progress: Int) {
print("=================onProgress============\nprogress:\(progress)");
values.setValue(CommonUtil.getSendMessageClientMsgID(methodCall: self.call!), forKey: "clientMsgID")
values.setValue(progress, forKey: "progress")
CommonUtil.emitEvent(channel: channel, method: "msgSendProgressListener", type: "onProgress", errCode: nil, errMsg: nil, data: values)
}
public func onSuccess(_ data: String?) {
print("=================onSuccess============\nsuccess:\(data!)");
DispatchQueue.main.async { self.result!(data) }
}
public class AdvancedMsgListener: NSObject, Open_im_sdkOnAdvancedMsgListenerProtocol {
private let channel: FlutterMethodChannel
private let values: NSMutableDictionary = NSMutableDictionary(capacity: 0)
init(channel: FlutterMethodChannel, id: String) {
self.channel = channel
values.setValue(id, forKey: "id")
}
public func onRecvC2CReadReceipt(_ msgReceiptList: String?) {
values.setValue(msgReceiptList, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvC2CReadReceipt", errCode: nil, errMsg: nil, data: values)
public class AdvancedMsgListener: NSObject, Open_im_sdkOnAdvancedMsgListenerProtocol {
private let channel: FlutterMethodChannel
private let values: NSMutableDictionary = NSMutableDictionary(capacity: 0)
init(channel: FlutterMethodChannel, id: String) {
self.channel = channel
values.setValue(id, forKey: "id")
}
public func onRecvC2CReadReceipt(_ msgReceiptList: String?) {
values.setValue(msgReceiptList, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvC2CReadReceipt", errCode: nil, errMsg: nil, data: values)
}
public func onRecvMessageRevoked(_ msgId: String?) {
values.setValue(msgId, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageRevoked", errCode: nil, errMsg: nil, data: values)
}
public func onRecvNewMessage(_ message: String?) {
values.setValue(message, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvNewMessage", errCode: nil, errMsg: nil, data: values)
}
}
public func onRecvMessageRevoked(_ msgId: String?) {
values.setValue(msgId, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageRevoked", errCode: nil, errMsg: nil, data: values)
}
public func onRecvNewMessage(_ message: String?) {
values.setValue(message, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvNewMessage", errCode: nil, errMsg: nil, data: values)
}
}
}

View File

@@ -81,6 +81,14 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin {
conversationManager.setConversationDraft(methodCall: call, result: result)
}else if method == "pinConversation" {
conversationManager.pinConversation(methodCall: call, result: result)
}else if method == "markSingleMessageHasRead" {
conversationManager.markSingleMessageHasRead(methodCall: call, result: result)
}else if method == "markGroupMessageHasRead" {
conversationManager.markGroupMessageHasRead(methodCall: call, result: result)
}else if method == "getTotalUnreadMsgCount" {
conversationManager.getTotalUnreadMsgCount(methodCall: call, result: result)
}else if method == "getConversationIDBySessionType" {
conversationManager.getConversationIDBySessionType(methodCall: call, result: result)
}else{
print("Handle MethodName Error: ConversationManager method: \(method) not found")
}
@@ -145,26 +153,42 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin {
messageManager.insertSingleMessageToLocalStorage(methodCall: call, result: result)
}else if method == "findMessages" {
messageManager.findMessages(methodCall: call, result: result)
}else if method == "markSingleMessageHasRead" {
messageManager.markSingleMessageHasRead(methodCall: call, result: result)
}else if method == "markC2CMessageAsRead" {
messageManager.markC2CMessageAsRead(methodCall: call, result: result)
}else if method == "typingStatusUpdate" {
messageManager.typingStatusUpdate(methodCall: call, result: result)
}else if method == "createTextMessage" {
messageManager.createTextMessage(methodCall: call, result: result)
}else if method == "createTextAtMessage" {
messageManager.createTextAtMessage(methodCall: call, result: result)
}else if method == "createImageMessage" {
messageManager.createImageMessage(methodCall: call, result: result)
}else if method == "createImageMessageFromFullPath" {
// TODO:
}else if method == "createSoundMessage" {
messageManager.createSoundMessage(methodCall: call, result: result)
}else if method == "createSoundMessageFromFullPath" {
// TODO:
}else if method == "createVideoMessage" {
messageManager.createVideoMessage(methodCall: call, result: result)
}else if method == "createVideoMessageFromFullPath" {
// TODO:
}else if method == "createFileMessage" {
messageManager.createFileMessage(methodCall: call, result: result)
}else if method == "createMergerMessage" {
messageManager.createMergerMessage(methodCall: call, result: result)
}else if method == "createForwardMessage" {
messageManager.createForwardMessage(methodCall: call, result: result)
}else if method == "getTotalUnreadMsgCount" {
messageManager.getTotalUnreadMsgCount(methodCall: call, result: result)
}else if method == "createLocationMessage" {
// TODO:
}else if method == "createCustomMessage" {
// TODO:
}else if method == "createQuoteMessage" {
// TODO:
}else if method == "createCardMessage" {
// TODO:
}else if method == "forceSyncMsg" {
// TODO:
}else{
print("Handle MethodName Error: MessageManager method: \(method) not found")
}