From b8ebc36d29a33e9d766f29f4f8749c7767670fda Mon Sep 17 00:00:00 2001 From: hrxiang Date: Mon, 19 Jul 2021 18:30:34 +0800 Subject: [PATCH] init --- .../flutter_openim_sdk/util/CommonUtil.java | 14 +- example/ios/Runner/Base.lproj/Main.storyboard | 13 +- ios/Classes/CommonUtil.swift | 228 ++++++++---------- ios/Classes/Module/ConversationManager.swift | 11 +- ios/Classes/Module/FriendshipManager.swift | 14 +- ios/Classes/Module/GroupManager.swift | 112 ++++++++- ios/Classes/Module/IMManager.swift | 10 +- ios/Classes/Module/MessageManager.swift | 30 ++- ios/Classes/SwiftFlutterOpenimSdkPlugin.swift | 14 +- 9 files changed, 264 insertions(+), 182 deletions(-) diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/util/CommonUtil.java b/android/src/main/java/io/openim/flutter_openim_sdk/util/CommonUtil.java index d1994ff..a5403fd 100644 --- a/android/src/main/java/io/openim/flutter_openim_sdk/util/CommonUtil.java +++ b/android/src/main/java/io/openim/flutter_openim_sdk/util/CommonUtil.java @@ -89,19 +89,22 @@ public class CommonUtil { } public static String getJsonUid(MethodCall methodCall) { - return JsonUtil.toString(getParamValue(methodCall, KEY_UID)); + return getSDKJsonParam(methodCall, KEY_UID); } public static String getToken(MethodCall methodCall) { return getParamValue(methodCall, KEY_TOKEN); } + public static String getUidList(MethodCall methodCall) { + return getSDKJsonParam(methodCall, KEY_USER_IDS); + } + public static String getMessageText(MethodCall methodCall) { return getParamValue(methodCall, KEY_TEXT); } public static String getAtUserList(MethodCall methodCall) { -// return methodCall.argument(KEY_AT_USER_LIST); return getSDKJsonParam(methodCall, KEY_AT_USER_LIST); } @@ -144,7 +147,6 @@ public class CommonUtil { } public static String getMergerMessageList(MethodCall methodCall) { -// return methodCall.argument(KEY_MERGER_MESSAGE_LIST); return getSDKJsonParam(methodCall, KEY_MERGER_MESSAGE_LIST); } @@ -153,12 +155,10 @@ public class CommonUtil { } public static String getSummaryList(MethodCall methodCall) { -// return methodCall.argument(KEY_SUMMARY_LIST); return getSDKJsonParam(methodCall, KEY_SUMMARY_LIST); } public static String getForwardMessage(MethodCall methodCall) { -// return methodCall.argument(KEY_FORWARD_MESSAGE); return getSDKJsonParam(methodCall, KEY_FORWARD_MESSAGE); } @@ -227,10 +227,6 @@ public class CommonUtil { return getParamValue(methodCall, KEY_CONVERSATION_PINNED); } - public static String getUidList(MethodCall methodCall) { - return getSDKJsonParam(methodCall, KEY_USER_IDS); - } - public static String getGid(MethodCall methodCall) { return getParamValue(methodCall, KEY_GROUP_ID); } diff --git a/example/ios/Runner/Base.lproj/Main.storyboard b/example/ios/Runner/Base.lproj/Main.storyboard index f3c2851..9655b1a 100644 --- a/example/ios/Runner/Base.lproj/Main.storyboard +++ b/example/ios/Runner/Base.lproj/Main.storyboard @@ -1,8 +1,10 @@ - - + + + - + + @@ -14,13 +16,14 @@ - + - + + diff --git a/ios/Classes/CommonUtil.swift b/ios/Classes/CommonUtil.swift index 20f30f1..c4f9307 100644 --- a/ios/Classes/CommonUtil.swift +++ b/ios/Classes/CommonUtil.swift @@ -1,9 +1,3 @@ -// -// CommonUtil.swift -// Runner -// -// Created by z1u24 on 2021/6/28. -// import Foundation @@ -47,32 +41,27 @@ public class CommonUtil { } public static func getUid(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_LOGIN_UID) as! String + let result: String = getParamValue(methodCall: methodCall, param: KEY_UID) as! String return result } + + public static func getJsonUid(methodCall: FlutterMethodCall)->String{ + let result = getParamValue(methodCall: methodCall, param: KEY_UID) as AnyObject + let r = JsonUtil.toString(object: result) + return r + } public static func getToken(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_LOGIN_TOKEN) as! String + let result: String = getParamValue(methodCall: methodCall, param: KEY_TOKEN) as! String return result } public static func getUidList(methodCall: FlutterMethodCall)->String{ - let result = getParamValue(methodCall: methodCall, param: KEY_UID_LIST) as AnyObject + let result = getParamValue(methodCall: methodCall, param: KEY_USER_IDS) as AnyObject let r = JsonUtil.toString(object: result) return r } - public static func getUserUid(methodCall: FlutterMethodCall)->String{ - let result = getParamValue(methodCall: methodCall, param: KEY_LOGIN_UID) as AnyObject - let r = JsonUtil.toString(object: result) - return r - } - - public static func getDeleteUid(methodCall: FlutterMethodCall)->String{ - let result = getParamValue(methodCall: methodCall, param: KEY_DELETE_UID) as AnyObject - let r = JsonUtil.toString(object: result) - return r - } public static func getMessageText(methodCall: FlutterMethodCall)->String{ let result: String = getParamValue(methodCall: methodCall, param: KEY_TEXT) as! String @@ -80,8 +69,9 @@ public class CommonUtil { } public static func getAtUserList(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_AT_USER_LIST) as! String - return result + let result: String = getParamValue(methodCall: methodCall, param: KEY_AT_USER_LIST) as AnyObject + let r = JsonUtil.toString(object: result) + return r } public static func getImagePath(methodCall: FlutterMethodCall)->String{ @@ -130,8 +120,9 @@ public class CommonUtil { } public static func getMergerMessageList(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_MERGER_MESSAGE_LIST) as! String - return result + let result: String = getParamValue(methodCall: methodCall, param: KEY_MERGER_MESSAGE_LIST) as AnyObject + let r = JsonUtil.toString(object: result) + return r } public static func getMergerMessageTitle(methodCall: FlutterMethodCall)->String{ @@ -140,13 +131,15 @@ public class CommonUtil { } public static func getSummaryList(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_SUMMARY_LIST) as! String - return result + let result: String = getParamValue(methodCall: methodCall, param: KEY_SUMMARY_LIST) as AnyObject + let r = JsonUtil.toString(object: result) + return r } public static func getForwardMessage(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_FORWARD_MESSAGE) as! String - return result + let result: String = getParamValue(methodCall: methodCall, param: KEY_FORWARD_MESSAGE) as AnyObject + let r = JsonUtil.toString(object: result) + return r } public static func getSendMessageContent(methodCall: FlutterMethodCall)->String{ @@ -194,8 +187,9 @@ public class CommonUtil { } public static func getFindMessageIds(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_FIND_MESSAGE_IDS) as! String - return result + let result: String = getParamValue(methodCall: methodCall, param: KEY_FIND_MESSAGE_IDS) as AnyObject + let r = JsonUtil.toString(object: result) + return r } public static func getConversationId(methodCall: FlutterMethodCall)->String{ @@ -204,10 +198,21 @@ public class CommonUtil { } public static func getConversationIds(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_CONVERSATION_IDS) as! String + let result: String = getParamValue(methodCall: methodCall, param: KEY_CONVERSATION_IDS) as AnyObject + let r = JsonUtil.toString(object: result) + return r + } + + public static func getConversationSourceId(methodCall: FlutterMethodCall)->String { + let result: String = getParamValue(methodCall: methodCall, param: KEY_CONVERSATION_SOURCE_ID); return result } - + + public static func getConversationSessionType(methodCall: FlutterMethodCall)->Int{ + let result: Int = getParamValue(methodCall: methodCall, param: KEY_CONVERSATION_SESSION_TYPE) as! Int + return result + } + public static func getConversationDraft(methodCall: FlutterMethodCall)->String{ let result: String = getParamValue(methodCall: methodCall, param: KEY_CONVERSATION_DRAFT) as! String return result @@ -218,127 +223,100 @@ public class CommonUtil { return (result != 0) } - public static func getSessionType(methodCall: FlutterMethodCall)->Int{ - let result: Int = getParamValue(methodCall: methodCall, param: KEY_CONVERSATION_SESSION) as! Int - return result - } - - /** - * group - */ - public static func getGroupId(methodCall: FlutterMethodCall)->String{ + public static func getGid(methodCall: FlutterMethodCall)->String{ let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_ID) as! String return result } - - public static func getGroupReason(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_REASON) as! String - return result + + public static func getGidList(methodCall: FlutterMethodCall)->String{ + let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_IDS) as AnyObject + let r = JsonUtil.toString(object: result) + return r } - - public static func getGroupUserList(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_USERLIST) as! String + + public static func getGroupOpReason(methodCall: FlutterMethodCall)->String{ + let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_OP_REASON) as! String return result } - public static func getGroupFilter(methodCall: FlutterMethodCall)->Int32{ - let result: Int32 = getParamValue(methodCall: methodCall, param: KEY_GROUP_FILTER) as! Int32 + public static func getGroupListFilter(methodCall: FlutterMethodCall)->Int32{ + let result: Int32 = getParamValue(methodCall: methodCall, param: KEY_GROUP_LIST_FILTER) as! Int32 return result } - public static func getGroupNext(methodCall: FlutterMethodCall)->Int32{ - let result: Int32 = getParamValue(methodCall: methodCall, param: KEY_GROUP_NEXT) as! Int32 + public static func getGroupListNext(methodCall: FlutterMethodCall)->Int32{ + let result: Int32 = getParamValue(methodCall: methodCall, param: KEY_GROUP_LIST_NEXT) as! Int32 return result } public static func getGroupInfo(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_INFO) as! String - return result - } - - public static func getGroupMemberList(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_MEMBERLIST) as! String - return result - } - - public static func getGroupJsonInfo(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_JSONINFO) as! String - return result - } - - public static func getGroupIdList(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_IDLIST) as! String - return result - } - - public static func getGroupMessage(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_MESSAGE) as! String - return result + let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_INFO) as AnyObject + let r = JsonUtil.toString(object: result) + return r } - public static func getGroupUserId(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_USER_ID) as! String - return result + public static func getGroupMemberRoleList(methodCall: FlutterMethodCall)->String { + let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_MEMBER_ROLE_LIST) as AnyObject + let r = JsonUtil.toString(object: result) + return r } - - public static func getGroupApplication(methodCall: FlutterMethodCall)->String{ - let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_APPLICATION) as! String - return result + + public static func getGroupApplicationInfo(methodCall: FlutterMethodCall)->String { + let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_APPLICATION_INFO) as AnyObject + let r = JsonUtil.toString(object: result) + return r } - - + + //login - private static let KEY_LOGIN_UID: String = "uid"; - private static let KEY_LOGIN_TOKEN: String = "token"; - //userinfo - private static let KEY_UID_LIST: String = "uidList"; - private static let KEY_DELETE_UID: String = "deleteUid"; + private static let KEY_UID: String = "uid"; + private static let KEY_TOKEN: String = "token"; //create message body - private static let KEY_TEXT: String = "text"; - private static let KEY_AT_USER_LIST: String = "atUserList"; - private static let KEY_IMAGE_PATH: String = "imagePath"; - private static let KEY_SOUND_PATH: String = "soundPath"; + private static let KEY_TEXT: String = "text"; + private static let KEY_AT_USER_LIST: String = "atUserList"; + private static let KEY_IMAGE_PATH: String = "imagePath"; + private static let KEY_SOUND_PATH : String= "soundPath"; private static let KEY_SOUND_DURATION: String = "duration"; - private static let KEY_VIDEO_PATH: String = "videoPath"; - private static let KEY_VIDEO_TYPE: String = "videoType"; - private static let KEY_VIDEO_DURATION: String = "duration"; + private static let KEY_VIDEO_PATH: String = "videoPath"; + private static let KEY_VIDEO_TYPE: String = "videoType"; + private static let KEY_VIDEO_DURATION: String = "duration"; private static let KEY_VIDEO_SNAPSHOT_PATH: String = "snapshotPath"; - private static let KEY_FILE_PATH: String = "filePath"; + private static let KEY_FILE_PATH: String = "filePath"; private static let KEY_FILE_NAME: String = "fileName"; - private static let KEY_MERGER_MESSAGE_LIST: String = "messageList"; - private static let KEY_MERGER_MESSAGE_TITLE: String = "title"; - private static let KEY_SUMMARY_LIST: String = "summaryList"; - private static let KEY_FORWARD_MESSAGE: String = "message"; + private static let KEY_MERGER_MESSAGE_LIST: String = "messageList"; + private static let KEY_MERGER_MESSAGE_TITLE: String = "title"; + private static let KEY_SUMMARY_LIST =: String "summaryList"; + private static let KEY_FORWARD_MESSAGE: String = "message"; //send message private static let KEY_SEND_MESSAGE_CONTENT: String = "message"; - private static let KEY_SEND_MESSAGE_CONTENT_CLIENT_ID: String = "clientMsgID"; - private static let KEY_SEND_MESSAGE_RECEIVER: String = "receiver"; - private static let KEY_SEND_MESSAGE_GROUP_ID: String = "groupID"; - private static let KEY_SEND_MESSAGE_ONLINE_ONLY: String = "onlineUserOnly"; + private static let KEY_SEND_MESSAGE_CONTENT_CLIENT_ID: String = "clientMsgID"; + private static let KEY_SEND_MESSAGE_RECEIVER: String = "receiver"; + private static let KEY_SEND_MESSAGE_GROUP_ID: String = "groupID"; + private static let KEY_SEND_MESSAGE_ONLINE_ONLY: String = "onlineUserOnly"; //single chat - private static let KEY_SINGLE_MESSAGE_CONTENT: String = "message"; - private static let KEY_SINGLE_MESSAGE_USERID: String = "userID"; - private static let KEY_SINGLE_MESSAGE_SENDER: String = "sender"; + private static let KEY_SINGLE_MESSAGE_CONTENT: String = "message"; + private static let KEY_SINGLE_MESSAGE_USERID: String = "userID"; + private static let KEY_SINGLE_MESSAGE_SENDER: String = "sender"; + //group chat + private static let KEY_GROUP_MESSAGE_GROUPID: String = "groupID"; // find message private static let KEY_FIND_MESSAGE_IDS: String = "messageIDList"; // conversation private static let KEY_CONVERSATION_ID: String = "conversationID"; - private static let KEY_CONVERSATION_IDS: String = "conversationIDList"; - private static let KEY_CONVERSATION_DRAFT: String = "draftText"; - private static let KEY_CONVERSATION_PINNED: String = "isPinned"; - private static let KEY_CONVERSATION_SESSION: String = "sessionType"; - - //group - private static let KEY_GROUP_ID: String = "groupid"; - private static let KEY_GROUP_USERLIST: String = "userList"; - private static let KEY_GROUP_REASON: String = "reason"; - private static let KEY_GROUP_FILTER: String = "filter"; - private static let KEY_GROUP_NEXT: String = "next"; - private static let KEY_GROUP_INFO: String = "gInfo"; - private static let KEY_GROUP_MEMBERLIST: String = "memberList"; - private static let KEY_GROUP_JSONINFO: String = "jsonGroupInfo"; - private static let KEY_GROUP_IDLIST: String = "groupIdList"; - private static let KEY_GROUP_MESSAGE: String = "message"; - private static let KEY_USER_ID: String = "userId"; - private static let KEY_GROUP_APPLICATION: String = "application"; + private static let KEY_CONVERSATION_IDS: String = "conversationIDList"; + private static let KEY_CONVERSATION_DRAFT: String = "draftText"; + private static let KEY_CONVERSATION_PINNED: String = "isPinned"; + private static let KEY_CONVERSATION_SOURCE_ID: String = "sourceID"; + private static let KEY_CONVERSATION_SESSION_TYPE: String = "sessionType"; + // user info + private static let KEY_USER_IDS: String = "uidList"; + // group + private static let KEY_GROUP_ID: String = "gid"; + private static let KEY_GROUP_IDS: String = "gidList"; + private static let KEY_GROUP_OP_REASON: String = "reason"; + private static let KEY_GROUP_LIST_FILTER: String = "filter"; + private static let KEY_GROUP_LIST_NEXT: String = "next"; + private static let KEY_GROUP_INFO: String = "gInfo"; + private static let KEY_GROUP_MEMBER_ROLE_LIST: String = "memberList"; + private static let KEY_GROUP_APPLICATION_INFO: String = "application"; } diff --git a/ios/Classes/Module/ConversationManager.swift b/ios/Classes/Module/ConversationManager.swift index 9e3d96f..bb33644 100644 --- a/ios/Classes/Module/ConversationManager.swift +++ b/ios/Classes/Module/ConversationManager.swift @@ -16,7 +16,7 @@ public class ConversationManager:NSObject{ } func setConversationListener(methodCall: FlutterMethodCall, result: FlutterResult){ - Open_im_sdkSetConversationListener(ConversationListenerImpl(channel: channel)) + Open_im_sdkSetConversationListener(ConversationListener(channel: channel)) } func getAllConversationList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -24,7 +24,7 @@ public class ConversationManager:NSObject{ } func getOneConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkGetOneConversation(CommonUtil.getConversationId(methodCall: methodCall), CommonUtil.getSessionType(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkGetOneConversation(CommonUtil.getConversationSourceId(methodCall: methodCall), CommonUtil.getConversationSessionType(methodCall: methodCall), BaseImpl(result: result)) } func getMultipleConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -42,15 +42,10 @@ 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 getTotalUnreadMsgCount(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkGetTotalUnreadMsgCount(BaseImpl(result: result)) - } - } -public class ConversationListenerImpl:NSObject,Open_im_sdkOnConversationListenerProtocol { +public class ConversationListener:NSObject,Open_im_sdkOnConversationListenerProtocol { private let channel:FlutterMethodChannel diff --git a/ios/Classes/Module/FriendshipManager.swift b/ios/Classes/Module/FriendshipManager.swift index d79badb..f62bd59 100644 --- a/ios/Classes/Module/FriendshipManager.swift +++ b/ios/Classes/Module/FriendshipManager.swift @@ -16,7 +16,7 @@ public class FriendshipManager:NSObject{ } func setFriendListener(methodCall: FlutterMethodCall, result: FlutterResult){ - Open_im_sdkSetFriendListener(FriendshipListenerImpl(channel: channel)) + Open_im_sdkSetFriendListener(FriendshipListener(channel: channel)) } func getFriendsInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -40,7 +40,7 @@ public class FriendshipManager:NSObject{ } func addToBlackList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkAddToBlackList(BaseImpl(result: result), CommonUtil.getUserUid(methodCall: methodCall)) + Open_im_sdkAddToBlackList(BaseImpl(result: result), CommonUtil.getJsonUid(methodCall: methodCall)) } func getBlackList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -48,7 +48,7 @@ public class FriendshipManager:NSObject{ } func deleteFromBlackList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkDeleteFromBlackList(BaseImpl(result: result), CommonUtil.getUserUid(methodCall: methodCall)) + Open_im_sdkDeleteFromBlackList(BaseImpl(result: result), CommonUtil.getJsonUid(methodCall: methodCall)) } func checkFriend(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -56,15 +56,15 @@ public class FriendshipManager:NSObject{ } func deleteFromFriendList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkDeleteFromFriendList(CommonUtil.getDeleteUid(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkDeleteFromFriendList(CommonUtil.getJsonUid(methodCall: methodCall), BaseImpl(result: result)) } func acceptFriendApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkAcceptFriendApplication(BaseImpl(result: result), CommonUtil.getUid(methodCall: methodCall)) + Open_im_sdkAcceptFriendApplication(BaseImpl(result: result), CommonUtil.getJsonUid(methodCall: methodCall)) } func refuseFriendApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkRefuseFriendApplication(BaseImpl(result: result), CommonUtil.getUid(methodCall: methodCall)) + Open_im_sdkRefuseFriendApplication(BaseImpl(result: result), CommonUtil.getJsonUid(methodCall: methodCall)) } func forceSyncFriendApplication(methodCall: FlutterMethodCall, result: FlutterResult){ @@ -80,7 +80,7 @@ public class FriendshipManager:NSObject{ } } -public class FriendshipListenerImpl:NSObject,Open_im_sdkOnFriendshipListenerProtocol { +public class FriendshipListener:NSObject,Open_im_sdkOnFriendshipListenerProtocol { private let channel:FlutterMethodChannel init(channel:FlutterMethodChannel) { diff --git a/ios/Classes/Module/GroupManager.swift b/ios/Classes/Module/GroupManager.swift index a92bb40..2a82fd5 100644 --- a/ios/Classes/Module/GroupManager.swift +++ b/ios/Classes/Module/GroupManager.swift @@ -15,20 +15,24 @@ public class GroupManager:NSObject{ self.channel = channel } + func setGroupListener(methodCall: FlutterMethodCall, result: FlutterResult){ + Open_im_sdkSetGroupListener(GroupListener(channel: channel)) + } + func inviteUserToGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkInviteUserToGroup(CommonUtil.getGroupId(methodCall: methodCall), CommonUtil.getGroupReason(methodCall: methodCall), CommonUtil.getGroupUserList(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkInviteUserToGroup(CommonUtil.getGid(methodCall: methodCall), CommonUtil.getGroupOpReason(methodCall: methodCall), CommonUtil.getUidList(methodCall: methodCall), BaseImpl(result: result)) } func kickGroupMember(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkKickGroupMember(CommonUtil.getGroupId(methodCall: methodCall), CommonUtil.getGroupUserList(methodCall: methodCall), CommonUtil.getGroupReason(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkKickGroupMember(CommonUtil.getGid(methodCall: methodCall), CommonUtil.getGroupOpReason(methodCall: methodCall), CommonUtil.getUidList(methodCall: methodCall), BaseImpl(result: result)) } func getGroupMembersInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkGetGroupMembersInfo(CommonUtil.getGroupId(methodCall: methodCall), CommonUtil.getGroupUserList(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkGetGroupMembersInfo(CommonUtil.getGid(methodCall: methodCall), CommonUtil.getUidList(methodCall: methodCall), BaseImpl(result: result)) } func getGroupMemberList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkGetGroupMemberList(CommonUtil.getGroupId(methodCall: methodCall), CommonUtil.getGroupFilter(methodCall: methodCall), CommonUtil.getGroupNext(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkGetGroupMemberList(CommonUtil.getGid(methodCall: methodCall), CommonUtil.getGroupListFilter(methodCall: methodCall), CommonUtil.getGroupListNext(methodCall: methodCall), BaseImpl(result: result)) } func getJoinedGroupList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -36,27 +40,27 @@ public class GroupManager:NSObject{ } func createGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkCreateGroup(CommonUtil.getGroupInfo(methodCall: methodCall), CommonUtil.getGroupMemberList(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkCreateGroup(CommonUtil.getGroupInfo(methodCall: methodCall), CommonUtil.getGroupMemberRoleList(methodCall: methodCall), BaseImpl(result: result)) } func setGroupInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkSetGroupInfo(CommonUtil.getGroupJsonInfo(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkSetGroupInfo(CommonUtil.getGroupInfo(methodCall: methodCall), BaseImpl(result: result)) } func getGroupsInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkGetGroupsInfo(CommonUtil.getGroupIdList(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkGetGroupsInfo(CommonUtil.getGidList(methodCall: methodCall), BaseImpl(result: result)) } func joinGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkJoinGroup(CommonUtil.getGroupId(methodCall: methodCall), CommonUtil.getGroupMessage(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkJoinGroup(CommonUtil.getGid(methodCall: methodCall), CommonUtil.getGroupOpReason(methodCall: methodCall), BaseImpl(result: result)) } func quitGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkQuitGroup(CommonUtil.getGroupId(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkQuitGroup(CommonUtil.getGid(methodCall: methodCall), BaseImpl(result: result)) } func transferGroupOwner(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkTransferGroupOwner(CommonUtil.getGroupId(methodCall: methodCall), CommonUtil.getGroupUserId(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkTransferGroupOwner(CommonUtil.getGid(methodCall: methodCall), CommonUtil.getUid(methodCall: methodCall), BaseImpl(result: result)) } func getGroupApplicationList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -64,11 +68,95 @@ public class GroupManager:NSObject{ } func acceptGroupApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkAcceptGroupApplication(CommonUtil.getGroupApplication(methodCall: methodCall), CommonUtil.getGroupReason(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkAcceptGroupApplication(CommonUtil.getGroupApplicationInfo(methodCall: methodCall), CommonUtil.getGroupOpReason(methodCall: methodCall), BaseImpl(result: result)) } func refuseGroupApplication(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ - Open_im_sdkRefuseGroupApplication(CommonUtil.getGroupApplication(methodCall: methodCall), CommonUtil.getGroupReason(methodCall: methodCall), BaseImpl(result: result)) + Open_im_sdkRefuseGroupApplication(CommonUtil.getGroupApplicationInfo(methodCall: methodCall), CommonUtil.getGroupOpReason(methodCall: methodCall), BaseImpl(result: result)) + } + + func forceSyncApplyGroupRequest(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { + Open_im_sdkForceSyncApplyGroupRequest() + } + + func forceSyncGroupRequest(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { + Open_im_sdkForceSyncGroupRequest() + } + + func forceSyncJoinedGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { + Open_im_sdkForceSyncJoinedGroup() + } + + func forceSyncJoinedGroupMember(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { + Open_im_sdkForceSyncJoinedGroupMember() + } + +} +public class GroupListener:NSObject,Open_im_sdkOnGroupListenerProtocol { + private let channel:FlutterMethodChannel + + init(channel:FlutterMethodChannel) { + self.channel = channel + } + + public func onApplicationProcessed(_ s: String?,s1: String?,i: Int?,s2: String?) { + let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + values.setValue(s, forKey: "groupId") + values.setValue(s1, forKey: "opUser") + values.setValue(i, forKey: "agreeOrReject") + values.setValue(s2, forKey: "opReason") + CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onApplicationProcessed", errCode: nil, errMsg: nil, data: values) + } + + public func onGroupCreated(_ s: String?) { + let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + values.setValue(s, forKey: "groupId") + CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onGroupCreated", errCode: nil, errMsg: nil, data: values) + } + + public func onGroupInfoChanged(_ s: String?,s1: String?) { + let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + values.setValue(s, forKey: "groupId") + values.setValue(s1, forKey: "groupInfo") + CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onGroupInfoChanged", errCode: nil, errMsg: nil, data: values) + } + + public func onMemberEnter(_ s: String?,s1: String?) { + let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + values.setValue(s, forKey: "groupId") + values.setValue(s1, forKey: "memberList") + CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onMemberEnter", errCode: nil, errMsg: nil, data: values) + } + + public func onMemberInvited(_ s: String?,s1: String?,s2: String?) { + let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + values.setValue(s, forKey: "groupId") + values.setValue(s1, forKey: "opUser") + values.setValue(s2, forKey: "memberList") + CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onMemberInvited", errCode: nil, errMsg: nil, data: values) + } + + public func onMemberKicked(_ s: String?,s1: String?,s2: String?) { + let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + values.setValue(s, forKey: "groupId") + values.setValue(s1, forKey: "opUser") + values.setValue(s2, forKey: "memberList") + CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onMemberKicked", errCode: nil, errMsg: nil, data: values) + } + + public func onMemberLeave(_ s: String?,s1: String?) { + let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + values.setValue(s, forKey: "groupId") + values.setValue(s1, forKey: "member") + CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onMemberLeave", errCode: nil, errMsg: nil, data: values) + } + + public func onReceiveJoinApplication(_ s: String?,s1: String?,s2: String?) { + let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) + values.setValue(s, forKey: "groupId") + values.setValue(s1, forKey: "member") + values.setValue(s2, forKey: "opReason") + CommonUtil.emitEvent(channel: channel, method: "groupListener", type: "onReceiveJoinApplication", errCode: nil, errMsg: nil, data: values) } } diff --git a/ios/Classes/Module/IMManager.swift b/ios/Classes/Module/IMManager.swift index bb9a4a7..0754d43 100644 --- a/ios/Classes/Module/IMManager.swift +++ b/ios/Classes/Module/IMManager.swift @@ -17,7 +17,7 @@ public class IMMananger:NSObject{ } func initSDK(methodCall: FlutterMethodCall, result: FlutterResult){ - Open_im_sdkInitSDK(CommonUtil.getSDKJsonParam(methodCall: methodCall), SDKListenerImpl(channel: self.channel)) + Open_im_sdkInitSDK(CommonUtil.getSDKJsonParam(methodCall: methodCall), SDKListener(channel: self.channel)) } func login(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { @@ -33,7 +33,7 @@ public class IMMananger:NSObject{ } func getLoginUid(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { - DispatchQueue.main.async { result(Open_im_sdkGetLoginUser()) } + DispatchQueue.main.async { result(Open_im_sdkGetLoginUid()) } } func getUsersInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { @@ -47,9 +47,13 @@ public class IMMananger:NSObject{ func forceSyncLoginUerInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { Open_im_sdkForceSyncLoginUerInfo() } + + func forceReConn(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { + Open_im_sdkForceReConn() + } } -public class SDKListenerImpl:NSObject,Open_im_sdkIMSDKListenerProtocol { +public class SDKListener:NSObject,Open_im_sdkIMSDKListenerProtocol { private let channel:FlutterMethodChannel init(channel:FlutterMethodChannel) { diff --git a/ios/Classes/Module/MessageManager.swift b/ios/Classes/Module/MessageManager.swift index 164fa6c..57003cd 100644 --- a/ios/Classes/Module/MessageManager.swift +++ b/ios/Classes/Module/MessageManager.swift @@ -12,20 +12,17 @@ public class MessageManager:NSObject{ private let KEY_ID: String = "id" private let channel:FlutterMethodChannel private let listeners: NSMutableDictionary = NSMutableDictionary(capacity: 0) - private var sendMsgProgressListener: SendMsgProgressListener? init(channel:FlutterMethodChannel) { self.channel = channel } func addAdvancedMsgListener(methodCall: FlutterMethodCall, result: FlutterResult){ - if sendMsgProgressListener == nil { - sendMsgProgressListener = SendMsgProgressListener(channel: channel) - } + 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 lis = AdvancedMsgListenerImpl(channel: channel, id: key) + 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) @@ -38,17 +35,18 @@ public class MessageManager:NSObject{ 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! AdvancedMsgListenerImpl + let lis = listeners.value(forKey: s) as! AdvancedMsgListener listeners.removeObject(forKey: s) Open_im_sdkRemoveAdvancedMsgListener(lis) } } func sendMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ + let sendMsgProgressListener: SendMsgProgressListener= SendMsgProgressListener(channel: channel) sendMsgProgressListener?.setCall(methodCall: methodCall) sendMsgProgressListener?.setResult(result: result) print("===============sendMessage===============") - Open_im_sdkSendMessage(sendMsgProgressListener, CommonUtil.getSendMessageContent(methodCall: methodCall), CommonUtil.getSendMessageReceiver(methodCall: methodCall), CommonUtil.getSendMessageGroupId(methodCall: methodCall), CommonUtil.getSendMessageOnlineOnly(methodCall: methodCall)) + Open_im_sdkSendMessage(sendMsgProgressListener, CommonUtil.getSendMessageContent(methodCall: methodCall), CommonUtil.getSendMessageReceiver(methodCall: methodCall), CommonUtil.geSendMessageGroupId(methodCall: methodCall), CommonUtil.getSendMessageOnlineOnly(methodCall: methodCall)) } func getHistoryMessageList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -78,7 +76,11 @@ public class MessageManager:NSObject{ 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 createTextMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ let prama = Open_im_sdkCreateTextMessage(CommonUtil.getMessageText(methodCall: methodCall)) DispatchQueue.main.async { result(prama) } @@ -118,7 +120,13 @@ public class MessageManager:NSObject{ let prama = Open_im_sdkCreateForwardMessage(CommonUtil.getForwardMessage(methodCall: methodCall)) 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 { @@ -149,7 +157,7 @@ public class SendMsgProgressListener:NSObject, Open_im_sdkSendMsgCallBackProtoco print("=================onProgress============\nprogress:\(progress)"); values.setValue(CommonUtil.getSendMessageClientMsgID(methodCall: self.call!), forKey: "clientMsgID") values.setValue(progress, forKey: "progress") - CommonUtil.emitEvent(channel: channel, method: "messageProgressListener", type: "onProgress", errCode: nil, errMsg: nil, data: values) + CommonUtil.emitEvent(channel: channel, method: "msgSendProgressListener", type: "onProgress", errCode: nil, errMsg: nil, data: values) } public func onSuccess(_ data: String?) { @@ -159,7 +167,7 @@ public class SendMsgProgressListener:NSObject, Open_im_sdkSendMsgCallBackProtoco } -public class AdvancedMsgListenerImpl: NSObject, Open_im_sdkOnAdvancedMsgListenerProtocol { +public class AdvancedMsgListener: NSObject, Open_im_sdkOnAdvancedMsgListenerProtocol { private let channel: FlutterMethodChannel private let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) diff --git a/ios/Classes/SwiftFlutterOpenimSdkPlugin.swift b/ios/Classes/SwiftFlutterOpenimSdkPlugin.swift index 33f298b..b51e879 100644 --- a/ios/Classes/SwiftFlutterOpenimSdkPlugin.swift +++ b/ios/Classes/SwiftFlutterOpenimSdkPlugin.swift @@ -58,6 +58,8 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin { imManager.setSelfInfo(methodCall: call, result: result) }else if method == "forceSyncLoginUerInfo" { imManager.forceSyncLoginUerInfo(methodCall: call, result: result) + }}else if method == "forceReConn" { + imManager.forceReConn(methodCall: call, result: result) }else{ print("Handle MethodName Error: IMManager method: \(method) not found") } @@ -79,8 +81,6 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin { conversationManager.setConversationDraft(methodCall: call, result: result) }else if method == "pinConversation" { conversationManager.pinConversation(methodCall: call, result: result) - }else if method == "getTotalUnreadMsgCount" { - conversationManager.getTotalUnreadMsgCount(methodCall: call, result: result) }else{ print("Handle MethodName Error: ConversationManager method: \(method) not found") } @@ -163,6 +163,8 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin { messageManager.createMergerMessage(methodCall: call, result: result) }else if method == "createForwardMessage" { messageManager.createForwardMessage(methodCall: call, result: result) + }else if method == "getTotalUnreadMsgCount" { + conversationManager.getTotalUnreadMsgCount(methodCall: call, result: result) }else{ print("Handle MethodName Error: MessageManager method: \(method) not found") } @@ -198,6 +200,14 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin { groupManager.acceptGroupApplication(methodCall: call, result: result) }else if method == "refuseGroupApplication" { groupManager.refuseGroupApplication(methodCall: call, result: result) + }else if method == "forceSyncApplyGroupRequest" { + groupManager.forceSyncApplyGroupRequest(methodCall: call, result: result) + }else if method == "forceSyncGroupRequest" { + groupManager.forceSyncGroupRequest(methodCall: call, result: result) + }else if method == "forceSyncJoinedGroup" { + groupManager.forceSyncJoinedGroup(methodCall: call, result: result) + }else if method == "forceSyncJoinedGroupMember" { + groupManager.forceSyncJoinedGroupMember(methodCall: call, result: result) }else{ print("Handle MethodName Error: MessageManager method: \(method) not found") }