Skip to content

Commit f0fbb02

Browse files
authored
Merge pull request #500 from easemob/flutter2_dev
Flutter2 dev
2 parents e0c9dfa + b7c8afc commit f0fbb02

25 files changed

+1086
-555
lines changed

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
## NEXT
22

33
## 3.9.0+1
4-
- 修复message.attribute不准;
4+
- 修复message.attribute不准;
5+
- 增加 EMClient.getInstance.startCallback() 方法
6+
```dart
7+
EMClient.getInstance.startCallback();
8+
```
9+
只有调用该方法后,`EMContactManagerListener``EMGroupEventListener``EMChatRoomEventListener` 回调才会开始执行;
10+
- 修复删除聊天室白名单成员失败;
511

612
## 3.9.0
713

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,16 @@ try {
118118
> 退出也有失败的情况,需要确定是否失败。
119119
> 注册环信id详细说明请参考文档[用户体系集成](http://docs-im.easemob.com/im/server/ready/user)
120120
121+
#### UI 监听
122+
123+
124+
> 当UI已经准备好后,需要主动调用该方法,调用之后,`EMContactManagerListener``EMGroupEventListener``EMChatRoomEventListener` 回调才会开始执行。
125+
126+
```dart
127+
EMClient.getInstance.startCallback();
128+
```
129+
130+
121131
#### 监听服务器连接状态
122132

123133
```dart
@@ -457,6 +467,8 @@ try {
457467

458468
#### 通讯录监听
459469

470+
> 如果想要收到 `EMContactManagerListener` 回调,需要先调用 `EMClient.getInstance.startCallback();` 方法。
471+
460472
```dart
461473
class _PageState extends State<Page> implements EMContactManagerListener {
462474
@override
@@ -975,6 +987,8 @@ try {
975987
976988
#### 群回调监听
977989

990+
> 如果想要收到 `EMGroupEventListener` 回调,需要先调用 `EMClient.getInstance.startCallback();` 方法。
991+
978992
```dart
979993
class _PageState extends State<Page> implements EMGroupEventListener {
980994
@override
@@ -1356,6 +1370,9 @@ try {
13561370
13571371
#### 添加聊天室监听
13581372

1373+
> 如果想要收到 `EMChatRoomEventListener` 回调,需要先调用 `EMClient.getInstance.startCallback();` 方法。
1374+
1375+
13591376
```dart
13601377
class _PageState extends State<Page> implements EMChatRoomEventListener {
13611378
@override

android/src/main/java/com/easemob/im_flutter_sdk/EMChatRoomManagerWrapper.java

Lines changed: 129 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -555,149 +555,183 @@ private void registerEaseListener() {
555555

556556
@Override
557557
public void onWhiteListAdded(String chatRoomId, List<String> whitelist) {
558-
post(() -> {
559-
Map<String, Object> data = new HashMap<>();
560-
data.put("roomId", chatRoomId);
561-
data.put("whitelist", whitelist);
562-
data.put("type", "onWhiteListAdded");
563-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
564-
});
558+
EMListenerHandle.getInstance().addHandle(
559+
()-> {
560+
Map<String, Object> data = new HashMap<>();
561+
data.put("roomId", chatRoomId);
562+
data.put("whitelist", whitelist);
563+
data.put("type", "onWhiteListAdded");
564+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
565+
}
566+
);
567+
565568
}
566569

567570
@Override
568571
public void onWhiteListRemoved(String chatRoomId, List<String> whitelist) {
569-
post(() -> {
570-
Map<String, Object> data = new HashMap<>();
571-
data.put("roomId", chatRoomId);
572-
data.put("whitelist", whitelist);
573-
data.put("type", "onWhiteListRemoved");
574-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
575-
});
572+
EMListenerHandle.getInstance().addHandle(
573+
()-> {
574+
Map<String, Object> data = new HashMap<>();
575+
data.put("roomId", chatRoomId);
576+
data.put("whitelist", whitelist);
577+
data.put("type", "onWhiteListRemoved");
578+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
579+
}
580+
);
576581
}
577582

578583
@Override
579584
public void onAllMemberMuteStateChanged(String chatRoomId, boolean isMuted) {
580-
post(() -> {
581-
Map<String, Object> data = new HashMap<>();
582-
data.put("roomId", chatRoomId);
583-
data.put("isMuted", isMuted);
584-
data.put("type", "onAllMemberMuteStateChanged");
585-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
586-
});
585+
EMListenerHandle.getInstance().addHandle(
586+
()-> {
587+
Map<String, Object> data = new HashMap<>();
588+
data.put("roomId", chatRoomId);
589+
data.put("isMuted", isMuted);
590+
data.put("type", "onAllMemberMuteStateChanged");
591+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
592+
}
593+
);
594+
587595
}
588596

589597
@Override
590598
public void onChatRoomDestroyed(String roomId, String roomName) {
591-
post(() -> {
592-
Map<String, Object> data = new HashMap<>();
593-
data.put("roomId", roomId);
594-
data.put("roomName", roomName);
595-
data.put("type", "onChatRoomDestroyed");
596-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
597-
});
599+
EMListenerHandle.getInstance().addHandle(
600+
()-> {
601+
Map<String, Object> data = new HashMap<>();
602+
data.put("roomId", roomId);
603+
data.put("roomName", roomName);
604+
data.put("type", "onChatRoomDestroyed");
605+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
606+
}
607+
);
608+
598609
}
599610

600611
@Override
601612
public void onMemberJoined(String roomId, String participant) {
602-
post(() -> {
603-
Map<String, Object> data = new HashMap<>();
604-
data.put("roomId", roomId);
605-
data.put("participant", participant);
606-
data.put("type", "onMemberJoined");
607-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
608-
});
613+
EMListenerHandle.getInstance().addHandle(
614+
()-> {
615+
Map<String, Object> data = new HashMap<>();
616+
data.put("roomId", roomId);
617+
data.put("participant", participant);
618+
data.put("type", "onMemberJoined");
619+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
620+
}
621+
);
609622
}
610623

611624
@Override
612625
public void onMemberExited(String roomId, String roomName, String participant) {
613-
post(() -> {
614-
Map<String, Object> data = new HashMap<>();
615-
data.put("roomId", roomId);
616-
data.put("roomName", roomName);
617-
data.put("participant", participant);
618-
data.put("type", "onMemberExited");
619-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
620-
});
626+
EMListenerHandle.getInstance().addHandle(
627+
()-> {
628+
Map<String, Object> data = new HashMap<>();
629+
data.put("roomId", roomId);
630+
data.put("roomName", roomName);
631+
data.put("participant", participant);
632+
data.put("type", "onMemberExited");
633+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
634+
}
635+
);
636+
621637
}
622638

623639
@Override
624640
public void onRemovedFromChatRoom(int reason, String roomId, String roomName, String participant) {
625-
post(() -> {
626-
Map<String, Object> data = new HashMap<>();
627-
data.put("roomId", roomId);
628-
data.put("roomName", roomName);
629-
data.put("participant", participant);
630-
data.put("type", "onRemovedFromChatRoom");
631-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
632-
});
641+
EMListenerHandle.getInstance().addHandle(
642+
()-> {
643+
Map<String, Object> data = new HashMap<>();
644+
data.put("roomId", roomId);
645+
data.put("roomName", roomName);
646+
data.put("participant", participant);
647+
data.put("type", "onRemovedFromChatRoom");
648+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
649+
}
650+
);
651+
633652
}
634653

635654
@Override
636655
public void onMuteListAdded(String chatRoomId, List<String> mutes, long expireTime) {
637-
post(() -> {
638-
Map<String, Object> data = new HashMap<>();
639-
data.put("roomId", chatRoomId);
640-
data.put("mutes", mutes);
641-
data.put("expireTime", String.valueOf(expireTime));
642-
data.put("type", "onMuteListAdded");
643-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
644-
});
656+
EMListenerHandle.getInstance().addHandle(
657+
()-> {
658+
Map<String, Object> data = new HashMap<>();
659+
data.put("roomId", chatRoomId);
660+
data.put("mutes", mutes);
661+
data.put("expireTime", String.valueOf(expireTime));
662+
data.put("type", "onMuteListAdded");
663+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
664+
}
665+
);
645666
}
646667

647668
@Override
648669
public void onMuteListRemoved(String chatRoomId, List<String> mutes) {
649-
post(() -> {
650-
Map<String, Object> data = new HashMap<>();
651-
data.put("roomId", chatRoomId);
652-
data.put("mutes", mutes);
653-
data.put("type", "onMuteListRemoved");
654-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
655-
});
670+
EMListenerHandle.getInstance().addHandle(
671+
()-> {
672+
Map<String, Object> data = new HashMap<>();
673+
data.put("roomId", chatRoomId);
674+
data.put("mutes", mutes);
675+
data.put("type", "onMuteListRemoved");
676+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
677+
}
678+
);
679+
656680
}
657681

658682
@Override
659683
public void onAdminAdded(String chatRoomId, String admin) {
660-
post(() -> {
661-
Map<String, Object> data = new HashMap<>();
662-
data.put("roomId", chatRoomId);
663-
data.put("admin", admin);
664-
data.put("type", "onAdminAdded");
665-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
666-
});
684+
EMListenerHandle.getInstance().addHandle(
685+
()-> {
686+
Map<String, Object> data = new HashMap<>();
687+
data.put("roomId", chatRoomId);
688+
data.put("admin", admin);
689+
data.put("type", "onAdminAdded");
690+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
691+
}
692+
);
693+
667694
}
668695

669696
@Override
670697
public void onAdminRemoved(String chatRoomId, String admin) {
671-
post(() -> {
672-
Map<String, Object> data = new HashMap<>();
673-
data.put("roomId", chatRoomId);
674-
data.put("admin", admin);
675-
data.put("type", "onAdminRemoved");
676-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
677-
});
698+
EMListenerHandle.getInstance().addHandle(
699+
()-> {
700+
Map<String, Object> data = new HashMap<>();
701+
data.put("roomId", chatRoomId);
702+
data.put("admin", admin);
703+
data.put("type", "onAdminRemoved");
704+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
705+
}
706+
);
678707
}
679708

680709
@Override
681710
public void onOwnerChanged(String chatRoomId, String newOwner, String oldOwner) {
682-
post(() -> {
683-
Map<String, Object> data = new HashMap<>();
684-
data.put("roomId", chatRoomId);
685-
data.put("newOwner", newOwner);
686-
data.put("oldOwner", oldOwner);
687-
data.put("chatRoomChange", "onOwnerChanged");
688-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
689-
});
711+
EMListenerHandle.getInstance().addHandle(
712+
()-> {
713+
Map<String, Object> data = new HashMap<>();
714+
data.put("roomId", chatRoomId);
715+
data.put("newOwner", newOwner);
716+
data.put("oldOwner", oldOwner);
717+
data.put("chatRoomChange", "onOwnerChanged");
718+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
719+
}
720+
);
721+
690722
}
691723

692724
@Override
693725
public void onAnnouncementChanged(String chatRoomId, String announcement) {
694-
post(() -> {
695-
Map<String, Object> data = new HashMap<>();
696-
data.put("roomId", chatRoomId);
697-
data.put("announcement", announcement);
698-
data.put("chatRoomChange", "onAnnouncementChanged");
699-
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
700-
});
726+
EMListenerHandle.getInstance().addHandle(
727+
()-> {
728+
Map<String, Object> data = new HashMap<>();
729+
data.put("roomId", chatRoomId);
730+
data.put("announcement", announcement);
731+
data.put("chatRoomChange", "onAnnouncementChanged");
732+
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
733+
}
734+
);
701735
}
702736
});
703737
}

android/src/main/java/com/easemob/im_flutter_sdk/EMClientWrapper.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ else if (EMSDKMethod.isConnected.equals(call.method)) {
112112
}
113113
else if (EMSDKMethod.renewToken.equals(call.method)){
114114
renewToken(param, call.method, result);
115+
} else if (EMSDKMethod.startCallback.equals(call.method)) {
116+
startCallback();
115117
}
116118
else {
117119
super.onMethodCall(call, result);
@@ -163,6 +165,7 @@ private void logout(JSONObject param, String channelName, Result result) throws
163165
EMClient.getInstance().logout(unbindToken, new EMWrapperCallBack(result, channelName, null){
164166
@Override
165167
public void onSuccess() {
168+
EMListenerHandle.getInstance().clearHandle();
166169
object = true;
167170
super.onSuccess();
168171
}
@@ -296,6 +299,10 @@ private void getLoggedInDevicesFromServer(JSONObject param, String channelName,
296299
});
297300
}
298301

302+
private void startCallback() {
303+
EMListenerHandle.getInstance().startCallback();
304+
}
305+
299306
private void bindingManagers() {
300307
new EMChatManagerWrapper(binging, "chat_manager");
301308
new EMContactManagerWrapper(binging, "chat_contact_manager");

0 commit comments

Comments
 (0)