diff --git a/android/build.gradle b/android/build.gradle index 4e7cdf72..4b0a3ecd 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -4,18 +4,19 @@ version '1.0-SNAPSHOT' buildscript { repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + // classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:4.2.0' } } allprojects { repositories { google() - jcenter() + mavenCentral() } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 2b421a09..7574beae 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +# distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip \ No newline at end of file diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java index 3b1997b5..1f70b637 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java @@ -36,11 +36,6 @@ public class EMChatManagerWrapper extends EMWrapper implements MethodCallHandler private MethodChannel messageChannel; - EMChatManagerWrapper(Registrar registrar, String channelName) { - super(registrar, channelName); - messageChannel = new MethodChannel(registrar.messenger(), "com.easemob.im/em_message", JSONMethodCodec.INSTANCE); - registerEaseListener(); - } EMChatManagerWrapper(FlutterPlugin.FlutterPluginBinding flutterPluginBinding, String channelName) { super(flutterPluginBinding, channelName); diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMChatRoomManagerWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMChatRoomManagerWrapper.java index 548203c8..329041d7 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMChatRoomManagerWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMChatRoomManagerWrapper.java @@ -11,6 +11,7 @@ import org.json.JSONException; import org.json.JSONObject; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -24,11 +25,6 @@ public class EMChatRoomManagerWrapper extends EMWrapper implements MethodChannel.MethodCallHandler { - EMChatRoomManagerWrapper(PluginRegistry.Registrar registrar, String channelName) { - super(registrar, channelName); - registerEaseListener(); - } - EMChatRoomManagerWrapper(FlutterPlugin.FlutterPluginBinding flutterPluginBinding, String channelName) { super(flutterPluginBinding, channelName); registerEaseListener(); @@ -85,6 +81,18 @@ public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) { updateChatRoomAnnouncement(param, EMSDKMethod.updateChatRoomAnnouncement, result); } else if (EMSDKMethod.fetchChatRoomAnnouncement.equals(methodCall.method)) { fetchChatRoomAnnouncement(param, EMSDKMethod.fetchChatRoomAnnouncement, result); + } else if (EMSDKMethod.addMembersToChatRoomWhiteList.equals(methodCall.method)) { + addMembersToChatRoomWhiteList(param, EMSDKMethod.addMembersToChatRoomWhiteList, result); + } else if (EMSDKMethod.removeMembersFromChatRoomWhiteList.equals(methodCall.method)) { + removeMembersFromChatRoomWhiteList(param, EMSDKMethod.removeMembersFromChatRoomWhiteList, result); + } else if (EMSDKMethod.isMemberInChatRoomWhiteListFromServer.equals(methodCall.method)) { + isMemberInChatRoomWhiteListFromServer(param, EMSDKMethod.isMemberInChatRoomWhiteListFromServer, result); + } else if (EMSDKMethod.fetchChatRoomWhiteListFromServer.equals(methodCall.method)) { + fetchChatRoomWhiteListFromServer(param, EMSDKMethod.fetchChatRoomWhiteListFromServer, result); + } else if (EMSDKMethod.muteAllChatRoomMembers.equals(methodCall.method)) { + muteAllChatRoomsMembers(param, EMSDKMethod.fetchChatRoomWhiteListFromServer, result); + } else if (EMSDKMethod.unMuteAllChatRoomMembers.equals(methodCall.method)) { + unMuteAllChatRoomsMembers(param, EMSDKMethod.fetchChatRoomWhiteListFromServer, result); } else { super.onMethodCall(methodCall, result); } @@ -459,6 +467,30 @@ private void fetchChatRoomAnnouncement(JSONObject param, String channelName, Met }); } + private void addMembersToChatRoomWhiteList(JSONObject param, String channelName, MethodChannel.Result result) { + + } + + private void removeMembersFromChatRoomWhiteList(JSONObject param, String channelName, MethodChannel.Result result) { + + } + + private void isMemberInChatRoomWhiteListFromServer(JSONObject param, String channelName, MethodChannel.Result result) { + + } + + private void fetchChatRoomWhiteListFromServer(JSONObject param, String channelName, MethodChannel.Result result) { + + } + + private void muteAllChatRoomsMembers(JSONObject param, String channelName, MethodChannel.Result result) { + + } + + private void unMuteAllChatRoomsMembers(JSONObject param, String channelName, MethodChannel.Result result) { + + } + private void registerEaseListener() { EMClient.getInstance().chatroomManager().addChatRoomChangeListener(new EMChatRoomChangeListener() { diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMClientWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMClientWrapper.java index c237b0a3..b437bcfd 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMClientWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMClientWrapper.java @@ -31,11 +31,6 @@ public class EMClientWrapper extends EMWrapper implements MethodCallHandler { static EMClientWrapper wrapper; - EMClientWrapper(PluginRegistry.Registrar registrar, String channelName) { - super(registrar, channelName); - wrapper = this; - } - EMClientWrapper(FlutterPlugin.FlutterPluginBinding flutterPluginBinding, String channelName) { super(flutterPluginBinding, channelName); wrapper = this; @@ -265,15 +260,15 @@ private void getLoggedInDevicesFromServer(JSONObject param, String channelName, }); } - private void registerManagers() { - new EMChatManagerWrapper(registrar, "em_chat_manager"); - new EMContactManagerWrapper(registrar, "em_contact_manager"); - new EMChatRoomManagerWrapper(registrar, "em_chat_room_manager"); - new EMGroupManagerWrapper(registrar, "em_group_manager"); - new EMConversationWrapper(registrar, "em_conversation"); - new EMPushManagerWrapper(registrar, "em_push_manager"); - new EMUserInfoManagerWrapper(registrar, "em_userInfo_manager"); - } +// private void registerManagers() { +// new EMChatManagerWrapper(registrar, "em_chat_manager"); +// new EMContactManagerWrapper(registrar, "em_contact_manager"); +// new EMChatRoomManagerWrapper(registrar, "em_chat_room_manager"); +// new EMGroupManagerWrapper(registrar, "em_group_manager"); +// new EMConversationWrapper(registrar, "em_conversation"); +// new EMPushManagerWrapper(registrar, "em_push_manager"); +// new EMUserInfoManagerWrapper(registrar, "em_userInfo_manager"); +// } private void bindingManagers() { new EMChatManagerWrapper(binging, "em_chat_manager"); @@ -288,11 +283,7 @@ private void init(JSONObject param, String channelName, Result result) throws JS EMOptions options = EMOptionsHelper.fromJson(param, this.context); EMClient.getInstance().init(this.context, options); EMClient.getInstance().setDebugMode(param.getBoolean("debugModel")); - if (binging != null){ - bindingManagers(); - }else { - registerManagers(); - } + bindingManagers(); addEMListener(); Map data = new HashMap<>(); diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMContactManagerWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMContactManagerWrapper.java index 14d61a7e..0da7949c 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMContactManagerWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMContactManagerWrapper.java @@ -19,11 +19,6 @@ public class EMContactManagerWrapper extends EMWrapper implements MethodCallHandler { - EMContactManagerWrapper(PluginRegistry.Registrar registrar, String channelName) { - super(registrar, channelName); - registerEaseListener(); - } - EMContactManagerWrapper(FlutterPlugin.FlutterPluginBinding flutterPluginBinding, String channelName) { super(flutterPluginBinding, channelName); registerEaseListener(); diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMConversationWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMConversationWrapper.java index 00b1f949..0c8ea060 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMConversationWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMConversationWrapper.java @@ -22,10 +22,6 @@ public class EMConversationWrapper extends EMWrapper implements MethodCallHandler{ - EMConversationWrapper(PluginRegistry.Registrar registrar, String channelName) { - super(registrar, channelName); - } - EMConversationWrapper(FlutterPlugin.FlutterPluginBinding flutterPluginBinding, String channelName) { super(flutterPluginBinding, channelName); } diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMGroupManagerWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMGroupManagerWrapper.java index 82df04af..b011e74b 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMGroupManagerWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMGroupManagerWrapper.java @@ -31,11 +31,6 @@ public class EMGroupManagerWrapper extends EMWrapper implements MethodCallHandler { - EMGroupManagerWrapper(PluginRegistry.Registrar registrar, String channelName) { - super(registrar, channelName); - registerEaseListener(); - } - EMGroupManagerWrapper(FlutterPlugin.FlutterPluginBinding flutterPluginBinding, String channelName) { super(flutterPluginBinding, channelName); registerEaseListener(); @@ -78,6 +73,8 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { getGroupBlockListFromServer(param, EMSDKMethod.getGroupBlockListFromServer, result); } else if (EMSDKMethod.addMembers.equals(call.method)) { addMembers(param, EMSDKMethod.addMembers, result); + } else if (EMSDKMethod.inviterUser.equals(call.method)){ + inviterUser(param, EMSDKMethod.inviterUser, result); } else if (EMSDKMethod.removeMembers.equals(call.method)) { removeMembers(param, EMSDKMethod.removeMembers, result); } else if (EMSDKMethod.blockMembers.equals(call.method)) { @@ -335,6 +332,22 @@ private void getGroupAnnouncementFromServer(JSONObject param, String channelName new EMValueWrapperCallBack(result, channelName)); } + private void inviterUser(JSONObject param, String channelName, Result result) throws JSONException { + String groupId = param.getString("groupId"); + String reason = null; + if (param.has("reason")) { + reason = param.getString("reason"); + } + JSONArray array = param.getJSONArray("members"); + String[] members = new String[array.length()]; + for (int i = 0; i < array.length(); i++) { + members[i] = array.getString(i); + } + + EMClient.getInstance().groupManager().asyncInviteUser(groupId, members, reason, + new EMWrapperCallBack(result, channelName, true)); + } + private void addMembers(JSONObject param, String channelName, Result result) throws JSONException { String groupId = param.getString("groupId"); JSONArray array = param.getJSONArray("members"); @@ -344,6 +357,7 @@ private void addMembers(JSONObject param, String channelName, Result result) thr members[i] = array.getString(i); } + EMClient.getInstance().groupManager().asyncAddUsersToGroup(groupId, members, new EMWrapperCallBack(result, channelName, true)); } diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMPushManagerWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMPushManagerWrapper.java index 45bd51f9..8d5dcbda 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMPushManagerWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMPushManagerWrapper.java @@ -23,10 +23,6 @@ public class EMPushManagerWrapper extends EMWrapper implements MethodCallHandler { - EMPushManagerWrapper(PluginRegistry.Registrar registrar, String channelName) { - super(registrar, channelName); - } - EMPushManagerWrapper(FlutterPlugin.FlutterPluginBinding flutterPluginBinding, String channelName) { super(flutterPluginBinding, channelName); } diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMSDKMethod.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMSDKMethod.java index 469b915a..90992d27 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMSDKMethod.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMSDKMethod.java @@ -57,6 +57,7 @@ public class EMSDKMethod { static final String fetchHistoryMessages = "fetchHistoryMessages"; static final String searchChatMsgFromDB = "searchChatMsgFromDB"; static final String getMessage = "getMessage"; + static final String asyncFetchGroupAcks = "asyncFetchGroupAcks"; /// EMChatManager listener static final String onMessagesReceived = "onMessagesReceived"; @@ -126,7 +127,15 @@ public class EMSDKMethod { static final String fetchChatRoomBlockList = "fetchChatRoomBlockList"; static final String updateChatRoomAnnouncement = "updateChatRoomAnnouncement"; static final String fetchChatRoomAnnouncement = "fetchChatRoomAnnouncement"; - static final String asyncFetchGroupAcks = "asyncFetchGroupAck"; + + static final String addMembersToChatRoomWhiteList = "addMembersToChatRoomWhiteList"; + static final String removeMembersFromChatRoomWhiteList = "removeMembersFromChatRoomWhiteList"; + static final String fetchChatRoomWhiteListFromServer = "fetchChatRoomWhiteListFromServer"; + static final String isMemberInChatRoomWhiteListFromServer = "isMemberInChatRoomWhiteListFromServer"; + + static final String muteAllChatRoomMembers = "muteAllChatRoomMembers"; + static final String unMuteAllChatRoomMembers = "umMuteAllChatRoomMembers"; + // EMChatRoomManagerListener static final String chatRoomChange = "onChatRoomChanged"; @@ -147,6 +156,7 @@ public class EMSDKMethod { static final String getGroupFileListFromServer = "getGroupFileList"; static final String getGroupAnnouncementFromServer = "getGroupAnnouncementFromServer"; static final String addMembers = "addMembers"; + static final String inviterUser = "inviterUser"; static final String removeMembers = "removeMembers"; static final String blockMembers = "blockMembers"; static final String unblockMembers = "unblockMembers"; diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMUserInfoManagerWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMUserInfoManagerWrapper.java index a878ab5c..ad7570ee 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMUserInfoManagerWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMUserInfoManagerWrapper.java @@ -27,9 +27,6 @@ public class EMUserInfoManagerWrapper extends EMWrapper implements MethodCallHandler { - EMUserInfoManagerWrapper(PluginRegistry.Registrar registrar, String channelName) { - super(registrar, channelName); - } EMUserInfoManagerWrapper(FlutterPlugin.FlutterPluginBinding flutterPluginBinding, String channelName) { super(flutterPluginBinding, channelName); diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/ImFlutterSdkPlugin.java b/android/src/main/java/com/easemob/im_flutter_sdk/ImFlutterSdkPlugin.java index 4924d807..2e63e21c 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/ImFlutterSdkPlugin.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/ImFlutterSdkPlugin.java @@ -27,16 +27,10 @@ public class ImFlutterSdkPlugin implements FlutterPlugin, MethodChannel.MethodCa public ImFlutterSdkPlugin() { } - /** - * Plugin registration. - */ - public static void registerWith(Registrar registrar) { - new EMClientWrapper(registrar, "em_client"); - } @Override public void onAttachedToEngine(FlutterPlugin.FlutterPluginBinding flutterPluginBinding) { - final MethodChannel channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "em_client"); + final MethodChannel channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "em_client"); channel.setMethodCallHandler(new EMClientWrapper(flutterPluginBinding, "em_client")); } diff --git a/example/android/build.gradle b/example/android/build.gradle index 3100ad2d..4c0e9cc5 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -2,11 +2,11 @@ buildscript { ext.kotlin_version = '1.3.50' repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:4.2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -14,7 +14,7 @@ buildscript { allprojects { repositories { google() - jcenter() + mavenCentral() } } diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 56892a73..fb9cd293 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip diff --git a/ios/Classes/EMChatroomManagerWrapper.h b/ios/Classes/EMChatroomManagerWrapper.h index 031c4663..a0c6703b 100644 --- a/ios/Classes/EMChatroomManagerWrapper.h +++ b/ios/Classes/EMChatroomManagerWrapper.h @@ -8,7 +8,6 @@ #import "EMWrapper.h" NS_ASSUME_NONNULL_BEGIN - @interface EMChatroomManagerWrapper : EMWrapper @end diff --git a/ios/Classes/EMChatroomManagerWrapper.m b/ios/Classes/EMChatroomManagerWrapper.m index 9d6c30a2..6ba92b75 100644 --- a/ios/Classes/EMChatroomManagerWrapper.m +++ b/ios/Classes/EMChatroomManagerWrapper.m @@ -103,6 +103,24 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { else if ([EMMethodKeyUpdateChatRoomAnnouncement isEqualToString:call.method]) { [self updateChatroomAnnouncement:call.arguments result:result]; } + else if ([EMMethodKeyAddMembersToChatRoomWhiteList isEqualToString:call.method]) { + [self addMembersToChatRoomWhiteList:call.arguments result:result]; + } + else if ([EMMethodKeyRemoveMembersFromChatRoomWhiteList isEqualToString:call.method]) { + [self removeMembersFromChatRoomWhiteList:call.arguments result:result]; + } + else if ([EMMethodKeyFetchChatRoomWhiteListFromServer isEqualToString:call.method]) { + [self fetchChatRoomWhiteListFromServer:call.arguments result:result]; + } + else if ([EMMethodKeyIsMemberInChatRoomWhiteListFromServer isEqualToString:call.method]) { + [self isMemberInChatRoomWhiteListFromServer:call.arguments result:result]; + } + else if ([EMMethodKeyMuteAllChatRoomMembers isEqualToString:call.method]) { + [self muteAllChatRoomMembers:call.arguments result:result]; + } + else if ([EMMethodKeyUnMuteAllChatRoomMembers isEqualToString:call.method]) { + [self unMuteAllChatRoomMembers:call.arguments result:result]; + } else { [super handleMethodCall:call result:result]; } @@ -494,6 +512,31 @@ - (void)updateChatroomAnnouncement:(NSDictionary *)param result:(FlutterResult)r }]; } +// TODO: chatroom white list. +- (void)addMembersToChatRoomWhiteList:(NSDictionary *)param result:(FlutterResult)result { + +} + +- (void)removeMembersFromChatRoomWhiteList:(NSDictionary *)param result:(FlutterResult)result { + +} + +- (void)isMemberInChatRoomWhiteListFromServer:(NSDictionary *)param result:(FlutterResult)result { + +} + +- (void)fetchChatRoomWhiteListFromServer:(NSDictionary *)param result:(FlutterResult)result { + +} + +- (void)muteAllChatRoomMembers:(NSDictionary *)param result:(FlutterResult)result { + +} + +- (void)unMuteAllChatRoomMembers:(NSDictionary *)param result:(FlutterResult)result { + +} + #pragma mark - EMChatroomManagerWrapper - (void)userDidJoinChatroom:(EMChatroom *)aChatroom diff --git a/ios/Classes/EMClientWrapper.m b/ios/Classes/EMClientWrapper.m index ba105551..6523add7 100644 --- a/ios/Classes/EMClientWrapper.m +++ b/ios/Classes/EMClientWrapper.m @@ -397,7 +397,7 @@ - (void)_registerAPNs { application.applicationIconBadgeNumber = 0; if (NSClassFromString(@"UNUserNotificationCenter")) { - [UNUserNotificationCenter currentNotificationCenter].delegate = self; +// [UNUserNotificationCenter currentNotificationCenter].delegate = self; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert completionHandler:^(BOOL granted, NSError *error) { if (granted) { #if !TARGET_IPHONE_SIMULATOR @@ -425,14 +425,14 @@ - (void)_registerAPNs { #pragma mark - AppDelegate -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - - return YES; -} - -- (void)applicationDidBecomeActive:(UIApplication *)application { - -} +//- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { +// +// return YES; +//} +// +//- (void)applicationDidBecomeActive:(UIApplication *)application { +// +//} @end diff --git a/ios/Classes/EMGroupManagerWrapper.m b/ios/Classes/EMGroupManagerWrapper.m index af421bde..fce21a9f 100644 --- a/ios/Classes/EMGroupManagerWrapper.m +++ b/ios/Classes/EMGroupManagerWrapper.m @@ -92,6 +92,9 @@ - (void)handleMethodCall:(FlutterMethodCall*)call { [self addMembers:call.arguments result:result]; } + else if ([EMMethodKeyInviterUser isEqualToString:call.method]){ + [self inviterUsers:call.arguments result:result]; + } else if ([EMMethodKeyRemoveMembers isEqualToString:call.method]) { [self removeMembers:call.arguments result:result]; @@ -421,6 +424,20 @@ - (void)addMembers:(NSDictionary *)param result:(FlutterResult)result { }]; } +- (void)inviterUsers:(NSDictionary *)param result:(FlutterResult)result { + __weak typeof(self) weakSelf = self; + [EMClient.sharedClient.groupManager addMembers:param[@"members"] + toGroup:param[@"groupId"] + message:param[@"reason"] + completion:^(EMGroup *aGroup, EMError *aError) { + [weakSelf wrapperCallBack:result + channelName:EMMethodKeyInviterUser + error:aError + object:[aGroup toJson]]; + }]; + +} + - (void)removeMembers:(NSDictionary *)param result:(FlutterResult)result { __weak typeof(self) weakSelf = self; [EMClient.sharedClient.groupManager removeMembers:param[@"members"] diff --git a/ios/Classes/EMSDKMethod.h b/ios/Classes/EMSDKMethod.h index d856cf41..e7d39cdc 100644 --- a/ios/Classes/EMSDKMethod.h +++ b/ios/Classes/EMSDKMethod.h @@ -10,6 +10,7 @@ static NSString *const EMMethodKeyDebugLog = @"debugLog"; static NSString *const EMMethodKeyErrorLog = @"errorLog"; + #pragma mark - EMClientWrapper static NSString *const EMMethodKeyInit = @"init"; static NSString *const EMMethodKeyCreateAccount = @"createAccount"; @@ -139,6 +140,15 @@ static NSString *const EMMethodKeyFetchChatroomBlockListFromServer = @"fetchChat static NSString *const EMMethodKeyUpdateChatRoomAnnouncement = @"updateChatRoomAnnouncement"; static NSString *const EMMethodKeyFetchChatroomAnnouncement = @"fetchChatRoomAnnouncement"; +static const NSString *EMMethodKeyAddMembersToChatRoomWhiteList = @"addMembersToChatRoomWhiteList"; +static const NSString *EMMethodKeyRemoveMembersFromChatRoomWhiteList = @"removeMembersFromChatRoomWhiteList"; +static const NSString *EMMethodKeyFetchChatRoomWhiteListFromServer = @"fetchChatRoomWhiteListFromServer"; +static const NSString *EMMethodKeyIsMemberInChatRoomWhiteListFromServer = @"isMemberInChatRoomWhiteListFromServer"; + +static const NSString *EMMethodKeyMuteAllChatRoomMembers = @"muteAllChatRoomMembers"; +static const NSString *EMMethodKeyUnMuteAllChatRoomMembers = @"umMuteAllChatRoomMembers"; + + static NSString *const EMMethodKeyChatroomChanged = @"onChatRoomChanged"; #pragma mark - EMGroupManagerWrapper @@ -158,6 +168,7 @@ static NSString *const EMMethodKeyIsMemberInWhiteListFromServer = @"isMemberInWh static NSString *const EMMethodKeyGetGroupFileListFromServer = @"getGroupFileListFromServer"; static NSString *const EMMethodKeyGetGroupAnnouncementFromServer = @"getGroupAnnouncementFromServer"; static NSString *const EMMethodKeyAddMembers = @"addMembers"; +static NSString *const EMMethodKeyInviterUser = @"inviterUser"; static NSString *const EMMethodKeyRemoveMembers = @"removeMembers"; static NSString *const EMMethodKeyBlockMembers = @"blockMembers"; static NSString *const EMMethodKeyUnblockMembers = @"unblockMembers"; diff --git a/ios/Classes/ImFlutterSdkPlugin.m b/ios/Classes/ImFlutterSdkPlugin.m index d4b8978b..89215e50 100644 --- a/ios/Classes/ImFlutterSdkPlugin.m +++ b/ios/Classes/ImFlutterSdkPlugin.m @@ -44,11 +44,6 @@ - (void)application:(UIApplication *)application didRegisterForRemoteNotificatio }); } -- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo -{ - [[EMClient sharedClient] application:application didReceiveRemoteNotification:userInfo]; -} - - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { NSLog(@"注册推送失败 --- %@", error); } diff --git a/lib/src/em_chat_room_manager.dart b/lib/src/em_chat_room_manager.dart index 9f4fcec9..5d7ee5c9 100644 --- a/lib/src/em_chat_room_manager.dart +++ b/lib/src/em_chat_room_manager.dart @@ -377,4 +377,74 @@ class EMChatRoomManager { EMError.hasErrorFromResult(result); return result[EMSDKMethod.fetchChatRoomAnnouncement]; } + + /* + /// 从服务器获取聊天室白名单列表 [roomId]: 聊天室id + Future> fetchChatRoomWhiteListFromServer(String roomId) async { + Map req = {"roomId": roomId}; + Map result = await _channel.invokeMethod( + EMSDKMethod.fetchChatRoomWhiteListFromServer, req); + EMError.hasErrorFromResult(result); + List contacts = []; + result[EMSDKMethod.fetchChatRoomWhiteListFromServer]?.forEach((element) { + contacts.add(element); + }); + return contacts; + } + + /// 判断当前登录账号是否在聊天室白名单中 [roomId]: 聊天室id + Future isMemberInChatRoomWhiteList(String roomId) async { + Map req = {"roomId": roomId}; + Map result = await _channel.invokeMethod( + EMSDKMethod.isMemberInChatRoomWhiteListFromServer, req); + EMError.hasErrorFromResult(result); + return result.boolValue(EMSDKMethod.isMemberInChatRoomWhiteListFromServer); + } + + /// 向聊天室白名单中添加用户[roomId]: 聊天室id, [members]: 需要添加到聊天室的用户id。 + Future addMembersToChatRoomWhiteList( + String roomId, List members) async { + Map req = { + "roomId": roomId, + "members": members, + }; + Map result = await _channel.invokeMethod( + EMSDKMethod.addMembersToChatRoomWhiteList, + req, + ); + + EMError.hasErrorFromResult(result); + + return EMChatRoom.fromJson( + result[EMSDKMethod.addMembersToChatRoomWhiteList]); + } + + /// 从聊天室中移除白名单成员,[roomId]: 聊天室id, [members]: 需要移除的用户列表。 + Future removeMembersFromChatRoomWhiteList( + String roomId, + List members, + ) async { + Map req = { + "roomId": roomId, + "members": members, + }; + Map result = await _channel.invokeMethod( + EMSDKMethod.addMembersToChatRoomWhiteList, + req, + ); + + EMError.hasErrorFromResult(result); + + return EMChatRoom.fromJson( + result[EMSDKMethod.removeMembersFromChatRoomWhiteList]); + } + + Future muteAllChatRoomMembers(String roomId) async { + return false; + } + + Future unMuteAllChatRoomMembers(String roomId) async { + return false; + } + */ } diff --git a/lib/src/em_group_manager.dart b/lib/src/em_group_manager.dart index 64b1dd71..cd99836e 100644 --- a/lib/src/em_group_manager.dart +++ b/lib/src/em_group_manager.dart @@ -205,7 +205,7 @@ class EMGroupManager { return result[EMSDKMethod.getGroupAnnouncementFromServer]; } - /// 邀请用户加入私有群, 用于私有群: PrivateOnlyOwnerInvite / PrivateMemberCanInvite + /// 邀请用户加入私有群,用于公开群: PublicJoinNeedApproval / PublicOpenJoin Future addMembers( String groupId, List members, [ @@ -216,6 +216,28 @@ class EMGroupManager { EMError.hasErrorFromResult(result); } + /// 邀请用户加入私有群,用于私有群: PrivateOnlyOwnerInvite / PrivateMemberCanInvite + Future inviterUser( + String groupId, + List members, [ + String? reason, + ]) async { + Map req = { + 'groupId': groupId, + 'members': members, + }; + if (reason != null) { + req["reason"] = reason; + } + + Map result = await _channel.invokeMethod( + EMSDKMethod.inviterUser, + req, + ); + + EMError.hasErrorFromResult(result); + } + /// 从群组中移除用户 Future removeMembers( String groupId, diff --git a/lib/src/em_sdk_method.dart b/lib/src/em_sdk_method.dart index 824a497d..5514cab0 100644 --- a/lib/src/em_sdk_method.dart +++ b/lib/src/em_sdk_method.dart @@ -130,6 +130,17 @@ class EMSDKMethod { static const String fetchChatRoomBlockList = 'fetchChatRoomBlockList'; static const String updateChatRoomAnnouncement = 'updateChatRoomAnnouncement'; static const String fetchChatRoomAnnouncement = 'fetchChatRoomAnnouncement'; + static const String addMembersToChatRoomWhiteList = + "addMembersToChatRoomWhiteList"; + static const String removeMembersFromChatRoomWhiteList = + "removeMembersFromChatRoomWhiteList"; + static const String fetchChatRoomWhiteListFromServer = + "fetchChatRoomWhiteListFromServer"; + static const String isMemberInChatRoomWhiteListFromServer = + "isMemberInChatRoomWhiteListFromServer"; + + static const String muteAllChatRoomMembers = "muteAllChatRoomMembers"; + static const String unMuteAllChatRoomMembers = "umMuteAllChatRoomMembers"; /// EMChatRoomManagerListener static const String chatRoomChange = 'onChatRoomChanged'; @@ -157,6 +168,7 @@ class EMSDKMethod { static const String getGroupAnnouncementFromServer = 'getGroupAnnouncementFromServer'; static const String addMembers = 'addMembers'; + static const String inviterUser = 'inviterUser'; static const String removeMembers = 'removeMembers'; static const String blockMembers = 'blockMembers'; static const String unblockMembers = 'unblockMembers'; diff --git a/lib/src/models/em_chat_room.dart b/lib/src/models/em_chat_room.dart index adc91de8..f2dd8cc2 100644 --- a/lib/src/models/em_chat_room.dart +++ b/lib/src/models/em_chat_room.dart @@ -25,7 +25,8 @@ class EMChatRoom { .._blockList = map['blockList'] .._muteList = map['muteList'] .._announcement = map['announcement'] - .._permissionType = EMChatRoom.permissionTypeFromInt(map['permissionType']) + .._permissionType = + EMChatRoom.permissionTypeFromInt(map['permissionType']) .._isAllMemberMuted = map.boolValue('isAllMemberMuted'); } diff --git a/pubspec.yaml b/pubspec.yaml index 1a8e0a4c..e8c2b404 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,6 +5,7 @@ homepage: http://www.easemob.com/product/im environment: sdk: '>=2.12.0 <3.0.0' + flutter: ">=2.0.0" dependencies: flutter: @@ -27,8 +28,13 @@ flutter: plugin: - androidPackage: com.easemob.im_flutter_sdk - pluginClass: ImFlutterSdkPlugin + platforms: + android: + package: com.easemob.im_flutter_sdk + pluginClass: ImFlutterSdkPlugin + ios: + pluginClass: ImFlutterSdkPlugin + # To add assets to your plugin package, add an assets section, like this: