diff --git a/docs/document/android/releasenote.md b/docs/document/android/releasenote.md
index 133abda9..735b469a 100644
--- a/docs/document/android/releasenote.md
+++ b/docs/document/android/releasenote.md
@@ -2,6 +2,27 @@
+## 版本 V4.12.0 Dev 2025-1-10(开发版)
+
+### 新增特性
+
+- [IM SDK] 用户加入聊天室可获取如下信息:
+ 1. 聊天室当前人数:通过 `EMChatRoom#getMemberCount` 方法获取。有用户加入或离开聊天室时,当前聊天室人数会更新。
+ 2. 聊天室全体禁言状态:通过 `EMChatRoom#isAllMemberMuted` 方法获取。该状态值在收到全体禁言状态变更时会更新。
+ 3. 聊天室创建时间戳:新增 `EMChatRoom#getCreateTimestamp` 方法获取。
+ 4. 当前用户是否在聊天室白名单中:新增 `EMChatRoom#isInWhitelist` 方法获取。
+ 5. 当前用户被禁言截止时间戳:`EMChatRoom#getMuteExpireTimestamp`。
+
+### 优化
+
+- [IM SDK] 移除 Android SDK 4.0.0 版本之前废弃的 API。
+- [IM SDK] 优化部分数据库操作。
+- [IM SDK] JNI 层添加对一些异常的消除机制及判空保护。
+
+### 修复
+
+- [IM SDK] 修复退出登录时因为一些在 SDK 回调里嵌套调用 SDK 相关 API 导致的异常。
+
## 版本 V4.11.0 Dev 2024-12-3(开发版)
### 新增特性
diff --git a/docs/document/applet/alipay.md b/docs/document/applet/alipay.md
index 02194976..a8162a42 100644
--- a/docs/document/applet/alipay.md
+++ b/docs/document/applet/alipay.md
@@ -86,6 +86,7 @@ import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK
```javascript
//实例化 SDK 对象
+// url 和 apiUrl 属性仅在 4.11.0 及之前版本需手动传入。4.12.0 及之后版本,SDK 会自动获取。
const WebIM = (wx.WebIM = SDK);
WebIM.conn = new WebIM.connection({
appKey: "your appKey",
diff --git a/docs/document/applet/baidu.md b/docs/document/applet/baidu.md
index 5d66b553..988d9edd 100644
--- a/docs/document/applet/baidu.md
+++ b/docs/document/applet/baidu.md
@@ -90,6 +90,7 @@ import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK
```javascript
//实例化 SDK 对象
+// url 和 apiUrl 属性仅在 4.11.0 及之前版本需手动传入。4.12.0 及之后版本,SDK 会自动获取。
const WebIM = (wx.WebIM = SDK);
WebIM.conn = new WebIM.connection({
appKey: "your appKey",
diff --git a/docs/document/applet/bytedance.md b/docs/document/applet/bytedance.md
index 7f5e1067..91ba90e1 100644
--- a/docs/document/applet/bytedance.md
+++ b/docs/document/applet/bytedance.md
@@ -87,6 +87,7 @@ import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK
```javascript
//实例化 SDK 对象
+// url 和 apiUrl 属性仅在 4.11.0 及之前版本需手动传入。4.12.0 及之后版本,SDK 会自动获取。
const WebIM = (wx.WebIM = SDK);
WebIM.conn = new WebIM.connection({
appKey: "your appKey",
diff --git a/docs/document/applet/qq.md b/docs/document/applet/qq.md
index 8d7c85e7..c460b321 100644
--- a/docs/document/applet/qq.md
+++ b/docs/document/applet/qq.md
@@ -94,6 +94,7 @@ import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK
```javascript
// 实例化 SDK 对象
+// url 和 apiUrl 属性仅在 4.11.0 及之前版本需手动传入。4.12.0 及之后版本,SDK 会自动获取。
const WebIM = (wx.WebIM = SDK);
WebIM.conn = new WebIM.connection({
appKey: "your appKey",
diff --git a/docs/document/applet/releasenote.md b/docs/document/applet/releasenote.md
index 3950fab0..3b148c4d 100644
--- a/docs/document/applet/releasenote.md
+++ b/docs/document/applet/releasenote.md
@@ -2,6 +2,28 @@
+## 版本 V4.12.0 Dev 2025-1-10(开发版)
+
+### 新增特性
+
+- `onModifiedMessage` 事件回调参数中增加消息 `ext` 字段。添加该字段后,修改发送成功的消息后,消息接收方会收到发送方发送修改后的消息时添加的扩展信息。
+- 加入聊天室 `joinChatRoom` 成功的回调新增 `info` 字段,包含如下信息,即用户加入聊天室后会收到如下信息:
+ - 聊天室创建时间:`createTimestamp`。
+ - 是否开启全员禁言:`isAllMembersMuted`。
+ - 是否在白名单中:`isInAllowlist`。
+ - 当前聊天室成员数:`memberCount`。
+ - 成员禁言到期时间:`muteExpireTimestamp`。
+
+### 优化
+
+- [IM SDK] 小程序 SDK 支持 HTTPDNS, 默认开启, 用户无需手动传入 `url` 和 `apiUrl`,SDK 会自动获取。
+
+### 修复
+
+- [IM SDK] 格式化小程序 SDK API 请求失败错误码,与 Web 端统一。**请注意使用密码登录 IM 返回的错误码和旧版本不兼容**。
+- [IM SDK] 修复 Uniapp SDK 4.36 版本运行到鸿蒙平台,出现的重连问题。
+- [IM SDK] 修复偶现的无法拉取消息的问题。
+
## 版本 V4.11.0 Dev 2024-12-3(开发版)
### 新增特性
diff --git a/docs/document/applet/uniapp.md b/docs/document/applet/uniapp.md
index 686f8310..c8e5012b 100644
--- a/docs/document/applet/uniapp.md
+++ b/docs/document/applet/uniapp.md
@@ -141,6 +141,7 @@ import SDK from 'easemob-websdk/uniApp/Easemob-chat';
```javascript
// 实例化 SDK 对象
+// url 和 apiUrl 属性仅在 4.11.0 及之前版本需手动传入。4.12.0 及之后版本,SDK 会自动获取。
const WebIM = wx.WebIM = SDK;
const conn = new WebIM.connection({
appKey: 'your appKey', //注意这里的 "K" 需大写
diff --git a/docs/document/applet/wechat.md b/docs/document/applet/wechat.md
index 2f798e99..64dc5f46 100644
--- a/docs/document/applet/wechat.md
+++ b/docs/document/applet/wechat.md
@@ -111,6 +111,7 @@ import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0sdk
```javascript
//实例化SDK对象
+// url 和 apiUrl 属性仅在 4.11.0 及之前版本需手动传入。4.12.0 及之后版本,SDK 会自动获取。
const WebIM = (wx.WebIM = SDK);
WebIM.conn = new WebIM.connection({
appKey: "your appKey",
diff --git a/docs/document/flutter/apireference.md b/docs/document/flutter/apireference.md
deleted file mode 100644
index 13e774f6..00000000
--- a/docs/document/flutter/apireference.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# SDK API Doc
-
-
-
-[Flutter API Reference](https://sdkdocs.easemob.com/apidoc/flutter/index.html)
\ No newline at end of file
diff --git a/docs/document/harmonyos/conversation_delete.md b/docs/document/harmonyos/conversation_delete.md
index 6366e6f1..2d549eed 100644
--- a/docs/document/harmonyos/conversation_delete.md
+++ b/docs/document/harmonyos/conversation_delete.md
@@ -22,7 +22,7 @@
### 单向删除服务端会话及其历史消息
-你可以调用 `deleteConversationFromServer` 方法删除服务器端会话,并选择是否删除服务端和本地的历史消息。会话和消息删除后,当前用户无法从服务器获取该会话和消息。调用该接口不会删除本地会话。该接口不影响其他用户的会话和消息。
+你可以调用 `deleteConversationFromServer` 方法单向删除服务器端会话和本地会话,并选择是否删除服务端和本地的历史消息。会话和消息删除后,当前用户无法从服务器获取该会话和消息。该接口不影响其他用户的会话和消息。
调用该方法之前,需调用 `getConversation` 方法获取会话 ID。
diff --git a/docs/document/harmonyos/error.md b/docs/document/harmonyos/error.md
index b262d2ae..28f5fb8b 100644
--- a/docs/document/harmonyos/error.md
+++ b/docs/document/harmonyos/error.md
@@ -89,7 +89,7 @@ HarmonyOS 中错误码的类为 `ChatError`。
| 703 | CHATROOM_PERMISSION_DENIED | 无权限的聊天室操作:例如,聊天室普通成员没有权限设置聊天室管理员。 |
| 704 | CHATROOM_MEMBERS_FULL | 聊天室已满:聊天室成员数量已达到创建聊天室时设置的最大人数。 |
| 705 | CHATROOM_NOT_EXIST | 聊天室不存在:尝试对不存在的聊天室进行操作时提示该错误。 |
-| 706 | CHATROOM_OWNER_NOT_ALLOW_LEAVE | 聊天室所有者不允许离开聊天室。若初始化时,`EMOptions#allowChatroomOwnerLeave` 参数设置为 `false`,聊天室所有者调用 `leaveChatRoom` 方法离开聊天室时会提示该错误。 |
+| 706 | CHATROOM_OWNER_NOT_ALLOW_LEAVE | 聊天室所有者不允许离开聊天室。若初始化时,`ChatOptions#allowChatroomOwnerLeave` 参数设置为 `false`,聊天室所有者调用 `leaveChatRoom` 方法离开聊天室时会提示该错误。 |
| 900 | USERINFO_USERCOUNT_EXCEED | 获取用户属性的用户个数超过 100。 |
| 901 | USERINFO_DATALENGTH_EXCEED | 设置的用户属性太长。单个用户的所有属性数据不能超过 2 KB,单个 app 所有用户属性数据不能超过 10 GB。 |
| 1000 | CONTACT_ADD_FAILED | 添加联系人失败。 |
diff --git a/docs/document/harmonyos/initialization.md b/docs/document/harmonyos/initialization.md
index 8066ccaf..7f56ad96 100644
--- a/docs/document/harmonyos/initialization.md
+++ b/docs/document/harmonyos/initialization.md
@@ -13,7 +13,9 @@
初始化示例代码:
```typescript
-let options = new ChatOptions("Your appkey");
+let options = new ChatOptions({
+ appKey: "你的 AppKey"
+});
......// 其他 ChatOptions 配置。
// 初始化时传入上下文以及 options
ChatClient.getInstance().init(context, options);
diff --git a/docs/document/harmonyos/message_retrieve.md b/docs/document/harmonyos/message_retrieve.md
index ec519b11..18ca796e 100644
--- a/docs/document/harmonyos/message_retrieve.md
+++ b/docs/document/harmonyos/message_retrieve.md
@@ -40,7 +40,8 @@
:::tip
1. **默认可获取单聊和群组聊天的历史消息。若要获取聊天室的历史消息,需联系环信商务。**
-2. 历史消息在服务器上的存储时间与产品的套餐包相关,详见[产品套餐包详情](/product/pricing.html#套餐包功能详情)。
+2. 对于单聊消息,自 1.5.0 版本开始,从服务器拉取历史消息时会读取服务端的消息已读和送达状态。该功能默认关闭,如果需要,请联系环信商务开通。
+3. 历史消息在服务器上的存储时间与产品的套餐包相关,详见[产品套餐包详情](/product/pricing.html#套餐包功能详情)。
:::
```typescript
diff --git a/docs/document/harmonyos/multi_device.md b/docs/document/harmonyos/multi_device.md
index 1685b5b2..da8fd73d 100644
--- a/docs/document/harmonyos/multi_device.md
+++ b/docs/document/harmonyos/multi_device.md
@@ -41,6 +41,8 @@
HarmonyOS SDK 初始化时会生成登录 ID 用于在多设备登录和消息推送时识别设备,并将该 ID 发送到服务器。服务器会自动将新消息发送到用户登录的设备,可以自动监听到其他设备上进行的操作。即时通讯 IM HarmonyOS SDK 提供以下多设备场景功能:
- 获取当前用户的其他已登录设备的登录 ID 列表;
+- 设置登录设备的名称;
+- 设置登录设备的平台;
- 获取其他设备的好友或者群组操作;
## 前提条件
@@ -69,6 +71,65 @@ ChatClient.getInstance().contactManager()?.getSelfIdsOnOtherPlatform().then(ids
});
```
+### 设置登录设备的名称
+
+即时通讯 IM 自 1.5.0 版本开始支持自定义设置设备名称,这样在多设备场景下,若有设备被踢下线,被踢设备就能知道是被哪个设备挤下线的。
+
+初始化 SDK 时,你可以调用 `ChatOptions#setCustomDeviceName` 方法设置登录设备的名称。设置后,若因达到了登录设备数量限制而导致在已登录的设备上强制退出时,被踢设备收到的 `ConnectionListener#onLogout` 回调会包含导致该设备被踢下线的自定义设备名称。
+
+:::tip
+登录成功后才会将该设置发送到服务器。
+:::
+
+```typescript
+let options = new ChatOptions({
+ appKey: "您的AppKey"
+});
+options.setCustomDeviceName("您的自定义设备名称");
+ChatClient.getInstance().init(this.context, options);
+
+ChatClient.getInstance().addConnectionListener({
+ onConnected:() => {
+
+ },
+ onDisconnected: (errorCode: number) => {
+
+ },
+ onLogout: (errorCode: number, info: LoginExtInfo) => {
+ // 当前登录账号在其它设备登录时,当前的登录设备被踢下线时会触发该回调。
+ // errorCode 为 {@link ChatError#USER_LOGIN_ANOTHER_DEVICE}。
+ // info.deviceInfo 是将当前设备踢出/挤下线的自定义设备名称,若设备没有自定义设备名称时默认回调设备型号。
+ // 其他错误码场景下,info.deviceInfo为空。
+ }
+});
+```
+
+### 设置登录设备的平台
+
+即时通讯 IM 自 1.5.0 版本开始支持自定义设置登录设备的平台,例如将手机和平板电脑设置为两个单独的平台,方便用户精细化控制同一平台的登录设备数量及平台间互踢等行为。
+
+你可以按照以下步骤设置登录设备所属的平台:
+
+1. 在环信控制台的**功能配置** > **功能配置总览**页面,点击**基础功能**页签,然后点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
+
+**设备平台**的取值范围为 [1,100],**设备数量**的取值范围为 [0,4]。
+
+![img](/images/common/multidevice_device_platform.png)
+
+2. 初始化 SDK 时,调用 `ChatOptions#setCustomOSPlatform` 方法自定义设置登录设备的平台。确保该方法中的 `platform` 参数的值与环信控制台的**添加自定义平台**对话框中设置的**设备平台**的值相同。
+
+:::tip
+登录成功后才会将该设置发送到服务器。
+:::
+
+```typescript
+let options = new ChatOptions({
+ appKey: "您的AppKey"
+});
+options.setCustomOSPlatform(1); // 取值范围为 [1,100]
+ChatClient.getInstance().init(this.context, options);
+```
+
### 设置登录设备的扩展信息
即时通讯 IM 自 1.4.0 版本开始支持设备的自定义扩展信息,这样在多设备场景下,若有设备被踢下线,被踢设备能获得该设备的自定义扩展信息。
@@ -80,7 +141,9 @@ ChatClient.getInstance().contactManager()?.getSelfIdsOnOtherPlatform().then(ids
:::
```typescript
-let options = new ChatOptions("您的AppKey");
+let options = new ChatOptions({
+ appKey: "你的 AppKey"
+});
options.setLoginCustomExt("您要设置的自定义扩展信息");
ChatClient.getInstance().init(this.context, options);
diff --git a/docs/document/harmonyos/overview.md b/docs/document/harmonyos/overview.md
index 6f4ed692..b7065bbf 100644
--- a/docs/document/harmonyos/overview.md
+++ b/docs/document/harmonyos/overview.md
@@ -33,7 +33,9 @@ ohos.permission.GET_NETWORK_INFO
初始化示例代码:
```typescript
-let options = new ChatOptions("Your appkey");
+let options = new ChatOptions({
+ appKey: "你的 AppKey"
+});
......// 其他 ChatOptions 配置。
// 初始化时传入上下文以及 options
ChatClient.getInstance().init(context, options);
diff --git a/docs/document/harmonyos/privatecloud.md b/docs/document/harmonyos/privatecloud.md
index 82cd261b..0f1f24e1 100644
--- a/docs/document/harmonyos/privatecloud.md
+++ b/docs/document/harmonyos/privatecloud.md
@@ -7,7 +7,9 @@
SDK 默认指向公有云地址,在部署私有云后,需要将地址重新指向到新的地址,以下是地址修改方法:
```typescript
-let options = new ChatOptions();//实例化 EMOptions 对象
+let options = new ChatOptions({
+ appKey: "您的AppKey"
+});//实例化 ChatOptions 对象
options.setRestServer("10.10.10.10:00");//设置私有云 REST 地址(ip/域名:port)
options.setIMServer("10.10.10.10");//设置私有云 IM 地址
options.setImPort(100);//设置私有云 IM 端口号
@@ -28,7 +30,9 @@ options.setRestServer("https://10.10.10.10:00");//设置私有云 REST 地址(
2. 从服务器端动态获取地址
```typescript
-let options = new ChatOptions();
+let options = new ChatOptions({
+ appKey: "您的AppKey"
+});
options.setDnsURL("url");//从服务器端动态获取地址
ChatClient.getInstance().init(options);//初始化 SDK
```
\ No newline at end of file
diff --git a/docs/document/harmonyos/push/push_harmony.md b/docs/document/harmonyos/push/push_harmony.md
index d075e708..bad1fa12 100644
--- a/docs/document/harmonyos/push/push_harmony.md
+++ b/docs/document/harmonyos/push/push_harmony.md
@@ -66,7 +66,9 @@
```typescript
// ChatOptions 需要传入 appkey 参数。
-let options = new ChatOptions("Your appKey");
+let options = new ChatOptions({
+ appKey: "你的 AppKey"
+});
// 传入 AppGallery Connect 获取到的 ClientID。
options.setAppIDForPush('Your ClientID');
// 初始化即时通讯 IM SDK。
diff --git a/docs/document/harmonyos/quickstart.md b/docs/document/harmonyos/quickstart.md
index 998b02d8..ed47a365 100644
--- a/docs/document/harmonyos/quickstart.md
+++ b/docs/document/harmonyos/quickstart.md
@@ -112,7 +112,9 @@
### 1. SDK 初始化
```typescript
-let options = new ChatOptions("Your appkey");
+let options = new ChatOptions({
+ appKey: "你的 AppKey"
+});
......// 其他 ChatOptions 配置。
// 初始化时传入上下文以及options
ChatClient.getInstance().init(context, options);
diff --git a/docs/document/harmonyos/releasenote.md b/docs/document/harmonyos/releasenote.md
index 80a53de4..99566a62 100644
--- a/docs/document/harmonyos/releasenote.md
+++ b/docs/document/harmonyos/releasenote.md
@@ -2,6 +2,45 @@
+## 版本 V1.5.0 Dev 2025-1-10(开发版)
+
+### 新增特性
+
+- 用户加入聊天室可获取如下信息:
+ 1. 聊天室当前人数:新增 `Chatroom#memberCount` 方法获取。有用户加入或离开聊天室时,当前聊天室人数会更新。
+ 2. 聊天室全体禁言状态:通过 `Chatroom#isAllMemberMuted` 方法获取。该状态值在收到全体禁言状态变更时会更新。
+ 3. 聊天室创建时间戳:新增 `Chatroom#createTimestamp` 方法获取。
+ 4. 当前用户是否在聊天室白名单中:新增 `Chatroom#isInWhitelist` 方法获取。
+ 5. 当前用户被禁言截止时间戳:新增 `Chatroom#muteExpireTimestamp` 方法获取。
+
+- 新增[自定义设备的平台和名称功能](multi_device.html#设置登录设备的名称):
+ - `ChatOptions#setCustomOSPlatform` 和 `ChatOptions#getCustomDeviceName`,用于设置和获取当前设备自定义平台代号;
+ - `ChatOptions#setCustomDeviceName` 和 `ChatOptions#getCustomDeviceName`,用于设置和获取当前设备自定义设备名称。
+- 新增 `ChatManager#getDBMsgsCount` 方法,用于获取数据库中的消息总数。
+- 新增[两个错误码](error.html):
+ - `ChatError#GROUP_USER_IN_BLOCKLIST`(613):该用户在群组黑名单中。群组黑名单中的用户进行某些操作时,例如,加入群组,会提示该错误。
+ - `ChatError#CHATROOM_USER_IN_BLOCKLIST`(707):该用户在聊天室黑名单中。聊天室黑名单中的用户进行某些操作时,例如,加入聊天室,会提示该错误。
+- 聊天室成员禁言回调:
+ - 新增聊天室禁言回调 [ChatroomListener#onMuteMapAdded](room_manage.html#监听聊天室事件),参数 Map 的 key 表示被禁言的用户 ID ,value 表示禁言到期时间戳;
+ - 废弃原来的回调 `ChatroomListener#onMutelistAdded`。
+- 新增[拉取服务器漫游消息](message_retrieve.html#从服务器获取指定会话的消息)时会读取服务端的消息已读和送达状态。该功能只适用于单聊消息,默认关闭,如果需要,请联系环信商务开通。
+
+### 优化
+
+- 废弃 `ChatOptions` 传入字符串的构造函数,新增传入 [AppParam](initialization.html#初始化) 的构造方法。
+- [发送前回调](/document/server-side/callback_presending.html)时修改的[消息扩展字段](message_send_receive.html#使用消息扩展字段),会同步到发送方。
+- 调用[删除服务端会话 API](conversation_delete.html#单向删除服务端会话及本地会话),成功后会删除本地会话。之前版本调用该接口可设置删除会话的本地消息,不能删除本地会话。
+- 群组和聊天室操作的默认错误码提示由 `GROUP_MEMBERS_FULL`(604)和 `CHATROOM_MEMBERS_FULL`(704)调整为 `GROUP_PERMISSION_DENIED`(603)和 `CHATROOM_PERMISSION_DENIED`(703)。例如,群组普通成员设置群组管理员时,由于缺乏权限,会提示 603 错误。
+- 优化部分数据库操作。
+
+### 修复
+
+- 修复未拉取好友时收到好友事件,导致好友列表不能更新的问题。
+- 修复置顶的单聊消息被撤回后,该消息未能及时地从置顶消息缓存(`Conversation#getPinnedMessages`)中移除的问题。
+- 修复调用 [PushManager#getSilentModeForConversations](push_notification_mode_dnd.html#获取多个会话的推送通知设置) 方法获取会话的免打扰状态失败的问题。
+- 修复极端情况下因网络异常导致的 Crash。
+- 修复多次设置 `ChatMessage#setMessageStatusCallback` 时导致崩溃的问题。
+
## 版本 V1.4.2 Dev 2024-11-04(开发版)
### 优化
diff --git a/docs/document/harmonyos/room_manage.md b/docs/document/harmonyos/room_manage.md
index be5aa1b3..d89ae470 100644
--- a/docs/document/harmonyos/room_manage.md
+++ b/docs/document/harmonyos/room_manage.md
@@ -107,7 +107,7 @@ interface ChatroomListener{
* 有成员被禁言。
* 被添加的成员收到该事件。禁言期间成员不能发送发消息。
*/
- onMutelistAdded?: (roomId: string, mutes: Array, expireTime: number) => void;
+ onMuteMapAdded?: (roomId: string, mutes: Map) => void;
/**
* 有成员从禁言列表中移除。
* 被解除禁言的成员会收到该事件。
diff --git a/docs/document/harmonyos/room_members.md b/docs/document/harmonyos/room_members.md
index a7ca63a5..514c3bdc 100644
--- a/docs/document/harmonyos/room_members.md
+++ b/docs/document/harmonyos/room_members.md
@@ -61,7 +61,9 @@ ChatClient.getInstance().chatroomManager()?.leaveChatroom(chatRoomId).then(()=>
示例代码如下:
```typescript
-let options = new ChatOptions();
+let options = new ChatOptions({
+ appKey: "你的 AppKey"
+});
options.setDeleteMessagesOnLeaveChatroom(false);
```
@@ -98,7 +100,7 @@ ChatClient.getInstance().chatroomManager()?.removeChatroomMembers(chatroomId, me
仅聊天室所有者和管理员可调用 `ChatroomManager#blockChatroomMembers` 方法将指定成员添加至黑名单。
-被加入黑名单后,该成员收到 `ChatroomListener#onRemovedFromChatRoom` 回调,移出原因为 `EMAChatroomManagerListener#BE_KICKED`。其他成员收到 `ChatroomListener#onMemberExited` 回调。
+被加入黑名单后,该成员收到 `ChatroomListener#onRemovedFromChatRoom` 回调,移出原因为 `LEAVE_REASON#BE_KICK`。其他成员收到 `ChatroomListener#onMemberExited` 回调。
被加入黑名单后,该成员无法再收发聊天室消息并被移出聊天室,黑名单中的成员如想再次加入聊天室,聊天室所有者或管理员必须先将其移出黑名单列表。
@@ -190,7 +192,7 @@ ChatClient.getInstance().chatroomManager()?.removeFromChatroomWhitelist(chatroom
#### 添加成员至聊天室禁言列表
-仅聊天室所有者和管理员可以调用 `ChatroomManager#muteChatroomMembers` 方法将指定成员添加至聊天室禁言列表,操作者外其他成员收到 `ChatroomListener#onMutelistAdded` 回调。
+仅聊天室所有者和管理员可以调用 `ChatroomManager#muteChatroomMembers` 方法将指定成员添加至聊天室禁言列表,操作者外其他成员收到 `ChatroomListener#onMuteMapAdded` 回调。
:::tip
聊天室所有者可禁言聊天室所有成员,聊天室管理员可禁言聊天室普通成员。
diff --git a/docs/document/ios/releasenote.md b/docs/document/ios/releasenote.md
index 44464687..a9df4333 100644
--- a/docs/document/ios/releasenote.md
+++ b/docs/document/ios/releasenote.md
@@ -2,6 +2,27 @@
+## 版本 V4.12.0 Dev 2025-1-10(开发版)
+
+### 新增特性
+
+- [IM SDK] 用户加入聊天室后会收到如下信息,即调用 `joinChatroom` 方法后的成功回调中会包含如下信息:
+ 1. 聊天室当前人数 `EMChatRoom#occupantsCount`。有用户加入或离开聊天室时,当前聊天室人数会更新。
+ 2. 聊天室全体禁言状态 `EMChatRoom#isMuteAllMembers`。该属性的值在收到全体禁言状态变更时更新。
+ 3. 聊天室创建时间戳 `EMChatRoom#createTimestamp`,新增属性。
+ 4. 当前用户是否在聊天室白名单中 `EMChatRoom#isInWhitelist`。该属性为新增属性,成员收到白名单变更回调时更新。
+ 5. 当前用户被禁言截止时间戳 `EMChatRoom#muteExpireTimestamp`。该属性为新增属性,成员收到禁言变更回调时更新。
+
+### 优化
+
+- [IM SDK] 优化部分数据库操作。
+
+### 修复
+
+- [IM SDK] 修复部分 API 请求的完成回调不在主线程执行的问题,包括以下 API:
+ - `EMUserInfoManager` 和 `EMPresenceManager` 下的全部 API。
+ - `EMChatManager` 下的 `fetchMessagesFromServer`、`fetchSupportedLanguages`、`translateMessage` 和 `getMessageCountWithCompletion` API。
+
## 版本 V4.11.0 Dev 2024-12-3(开发版)
### 新增特性
diff --git a/docs/document/web/releasenote.md b/docs/document/web/releasenote.md
index 1acc7421..398c6856 100644
--- a/docs/document/web/releasenote.md
+++ b/docs/document/web/releasenote.md
@@ -2,6 +2,22 @@
+## 版本 V4.12.0 Dev 2025-1-10(开发版)
+
+### 新增特性
+
+- `onModifiedMessage` 事件回调参数中增加消息 `ext` 字段。添加该字段后,修改消息后,接收方会收到发送方修改的扩展信息。
+- 加入聊天室 `joinChatRoom` 成功的回调新增 `info` 字段,包含如下信息,即用户加入聊天室后会收到如下信息:
+ - 聊天室创建时间:`createTimestamp`。
+ - 用户是否开启全员禁言:`isAllMembersMuted`。
+ - 用户是否在白名单中:`isInAllowlist`。
+ - 当前聊天室成员数:`memberCount`。
+ - 用户禁言到期时间:`muteExpireTimestamp`。
+
+### 修复
+
+- [IM SDK] 修复偶现无法拉取消息的问题。
+
## 版本 V4.11.0 Dev 2024-12-3(开发版)
### 新增特性
diff --git a/docs/product/product_dynamics.md b/docs/product/product_dynamics.md
index 6dc965a6..c83d9005 100644
--- a/docs/product/product_dynamics.md
+++ b/docs/product/product_dynamics.md
@@ -1,5 +1,11 @@
# 产品动态
+## 2025-01
+
+| 动态名称 | 动态描述 | 发布时间 | 相关文档 |
+| :----- | :------- | :---------------- | :---------------- |
+| SDK 4.12.0 开发版发布 | **新增特性**:
- 移动端/Web/小程序:用户加入聊天室可获取的信息新增聊天室当前人数、聊天室创建时间戳、当前用户是否在聊天室白名单中以及当前用户被禁言截止时间戳。
- HarmonyOS [新增自定义设备的名称](/document/harmonyos/multi_device.html#设置登录设备的名称):添加该功能后,在多设备场景下,若有设备被踢下线,被踢设备可知晓被哪个设备挤下线。
- HarmonyOS [新增自定义设备的平台](/document/harmonyos/multi_device.html#设置登录设备的平台):例如,将手机和平板电脑设置为两个单独的平台,方便用户精细化控制同一平台的登录设备数量及平台间互踢等行为。
- HarmonyOS [新增两个错误码](/document/harmonyos/error.html):`ChatError#GROUP_USER_IN_BLOCKLIST`(613):该用户在群组黑名单中。群组黑名单中的用户进行某些操作时,例如,加入群组,会提示该错误。`ChatError#CHATROOM_USER_IN_BLOCKLIST`(707):该用户在聊天室黑名单中。聊天室黑名单中的用户进行某些操作时,例如,加入聊天室,会提示该错误。
- HarmonyOS 新增拉取服务器漫游消息时会读取服务端的消息已读和送达状态。该功能只适用于单聊消息,默认关闭,如果需要,请联系环信商务开通。
**优化:**
- HarmonyOS 删除服务端会话时会同时删除本地会话。| 2025-01-11 |
- [Android 4.12.0 更新日志](/document/android/releasenote.html#版本-v4-12-0-dev-2025-1-10-开发版)
- [iOS 4.12.0 更新日志](/document/ios/releasenote.html#版本-v4-12-0-dev-2025-1-10-开发版)
- [Web 4.12.0 更新日志](/document/web/releasenote.html#版本-v4-12-0-dev-2025-1-10-开发版)
- [小程序 4.12.0 更新日志](/document/applet/releasenote.html#版本-v4-12-0-dev-2025-1-10-开发版)
- [鸿蒙 1.5.0 更新日志](/document/harmonyos/releasenote.html#版本-v1-5-0-dev-2025-1-10-开发版) |
+
## 2024-12
| 动态名称 | 动态描述 | 发布时间 | 相关文档 |