Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
## NEXT

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

## 3.9.0

Expand Down
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,16 @@ try {
> 退出也有失败的情况,需要确定是否失败。
> 注册环信id详细说明请参考文档[用户体系集成](http://docs-im.easemob.com/im/server/ready/user)。

#### UI 监听


> 当UI已经准备好后,需要主动调用该方法,调用之后,`EMContactManagerListener`、 `EMGroupEventListener` 、 `EMChatRoomEventListener` 回调才会开始执行。

```dart
EMClient.getInstance.startCallback();
```


#### 监听服务器连接状态

```dart
Expand Down Expand Up @@ -457,6 +467,8 @@ try {

#### 通讯录监听

> 如果想要收到 `EMContactManagerListener` 回调,需要先调用 `EMClient.getInstance.startCallback();` 方法。

```dart
class _PageState extends State<Page> implements EMContactManagerListener {
@override
Expand Down Expand Up @@ -975,6 +987,8 @@ try {

#### 群回调监听

> 如果想要收到 `EMGroupEventListener` 回调,需要先调用 `EMClient.getInstance.startCallback();` 方法。

```dart
class _PageState extends State<Page> implements EMGroupEventListener {
@override
Expand Down Expand Up @@ -1356,6 +1370,9 @@ try {

#### 添加聊天室监听

> 如果想要收到 `EMChatRoomEventListener` 回调,需要先调用 `EMClient.getInstance.startCallback();` 方法。


```dart
class _PageState extends State<Page> implements EMChatRoomEventListener {
@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -555,149 +555,183 @@ private void registerEaseListener() {

@Override
public void onWhiteListAdded(String chatRoomId, List<String> whitelist) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("whitelist", whitelist);
data.put("type", "onWhiteListAdded");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("whitelist", whitelist);
data.put("type", "onWhiteListAdded");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);

}

@Override
public void onWhiteListRemoved(String chatRoomId, List<String> whitelist) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("whitelist", whitelist);
data.put("type", "onWhiteListRemoved");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("whitelist", whitelist);
data.put("type", "onWhiteListRemoved");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);
}

@Override
public void onAllMemberMuteStateChanged(String chatRoomId, boolean isMuted) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("isMuted", isMuted);
data.put("type", "onAllMemberMuteStateChanged");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("isMuted", isMuted);
data.put("type", "onAllMemberMuteStateChanged");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);

}

@Override
public void onChatRoomDestroyed(String roomId, String roomName) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", roomId);
data.put("roomName", roomName);
data.put("type", "onChatRoomDestroyed");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", roomId);
data.put("roomName", roomName);
data.put("type", "onChatRoomDestroyed");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);

}

@Override
public void onMemberJoined(String roomId, String participant) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", roomId);
data.put("participant", participant);
data.put("type", "onMemberJoined");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", roomId);
data.put("participant", participant);
data.put("type", "onMemberJoined");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);
}

@Override
public void onMemberExited(String roomId, String roomName, String participant) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", roomId);
data.put("roomName", roomName);
data.put("participant", participant);
data.put("type", "onMemberExited");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", roomId);
data.put("roomName", roomName);
data.put("participant", participant);
data.put("type", "onMemberExited");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);

}

@Override
public void onRemovedFromChatRoom(int reason, String roomId, String roomName, String participant) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", roomId);
data.put("roomName", roomName);
data.put("participant", participant);
data.put("type", "onRemovedFromChatRoom");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", roomId);
data.put("roomName", roomName);
data.put("participant", participant);
data.put("type", "onRemovedFromChatRoom");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);

}

@Override
public void onMuteListAdded(String chatRoomId, List<String> mutes, long expireTime) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("mutes", mutes);
data.put("expireTime", String.valueOf(expireTime));
data.put("type", "onMuteListAdded");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("mutes", mutes);
data.put("expireTime", String.valueOf(expireTime));
data.put("type", "onMuteListAdded");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);
}

@Override
public void onMuteListRemoved(String chatRoomId, List<String> mutes) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("mutes", mutes);
data.put("type", "onMuteListRemoved");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("mutes", mutes);
data.put("type", "onMuteListRemoved");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);

}

@Override
public void onAdminAdded(String chatRoomId, String admin) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("admin", admin);
data.put("type", "onAdminAdded");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("admin", admin);
data.put("type", "onAdminAdded");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);

}

@Override
public void onAdminRemoved(String chatRoomId, String admin) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("admin", admin);
data.put("type", "onAdminRemoved");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("admin", admin);
data.put("type", "onAdminRemoved");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);
}

@Override
public void onOwnerChanged(String chatRoomId, String newOwner, String oldOwner) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("newOwner", newOwner);
data.put("oldOwner", oldOwner);
data.put("chatRoomChange", "onOwnerChanged");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("newOwner", newOwner);
data.put("oldOwner", oldOwner);
data.put("chatRoomChange", "onOwnerChanged");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);

}

@Override
public void onAnnouncementChanged(String chatRoomId, String announcement) {
post(() -> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("announcement", announcement);
data.put("chatRoomChange", "onAnnouncementChanged");
channel.invokeMethod(EMSDKMethod.chatRoomChange, data);
});
EMListenerHandle.getInstance().addHandle(
()-> {
Map<String, Object> data = new HashMap<>();
data.put("roomId", chatRoomId);
data.put("announcement", announcement);
data.put("chatRoomChange", "onAnnouncementChanged");
post(() -> channel.invokeMethod(EMSDKMethod.chatRoomChange, data));
}
);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ else if (EMSDKMethod.isConnected.equals(call.method)) {
}
else if (EMSDKMethod.renewToken.equals(call.method)){
renewToken(param, call.method, result);
} else if (EMSDKMethod.startCallback.equals(call.method)) {
startCallback();
}
else {
super.onMethodCall(call, result);
Expand Down Expand Up @@ -163,6 +165,7 @@ private void logout(JSONObject param, String channelName, Result result) throws
EMClient.getInstance().logout(unbindToken, new EMWrapperCallBack(result, channelName, null){
@Override
public void onSuccess() {
EMListenerHandle.getInstance().clearHandle();
object = true;
super.onSuccess();
}
Expand Down Expand Up @@ -296,6 +299,10 @@ private void getLoggedInDevicesFromServer(JSONObject param, String channelName,
});
}

private void startCallback() {
EMListenerHandle.getInstance().startCallback();
}

private void bindingManagers() {
new EMChatManagerWrapper(binging, "chat_manager");
new EMContactManagerWrapper(binging, "chat_contact_manager");
Expand Down
Loading