diff --git a/docs/document/android/group_overview.md b/docs/document/android/group_overview.md
index 862dbcf77..4eb8259a7 100644
--- a/docs/document/android/group_overview.md
+++ b/docs/document/android/group_overview.md
@@ -24,7 +24,7 @@
| 类型 | 分为公开群和私有群,创建群组时可设置入群是否需获得群主和群管理员的同意,支持不同使用场景。 | 没有公开和私有之分,所有用户均可自由加入或退出。 |
| 最大成员数 | 成员数支持取决于所选择的版本,最高版本支持 8,000 人。 | 成员数支持取决于所选择的版本,最高版本支持 10,000 人。如需提升该上限,请联系商务。 |
| 离线推送消息 | 离线时,会收到推送消息。 | 离线时,不会收到推送消息;成员(除聊天室白名单中的成员)离线超过 2 分钟会自动退出聊天室。 |
-| 离线消息存储 | 支持离线消息存储,App 下的所有群组共存储 200 条消息。
用户上线时,会收到离线消息。 | 不支持离线消息存储。如果需要用户新加入聊天室时服务器推送最近的历史消息,可以联系商务开通聊天室历史消息推送,每个会话默认支持 10 条消息,最多可调整至 200 条。 |
+| 离线消息存储 | 支持离线消息存储,对于每个终端用户来说,群聊会话共存储 200 条消息。
用户上线时,会收到离线消息。 | 不支持离线消息存储。如果需要用户新加入聊天室时服务器推送最近的历史消息,可以联系商务开通聊天室历史消息推送,每个会话默认支持 10 条消息,最多可调整至 200 条。 |
| 漫游消息存储 | 支持漫游消息存储。你可以从服务器获取指定会话的消息。 | 不支持漫游消息存储。 |
| 消息可靠性 | 群组中发送的所有消息,用户都会收到。 | 当消息量大时,聊天室中超过阈值的消息会被丢弃。消息开始丢弃的阈值为每秒 100 条消息,可以根据需求进行调整。 |
diff --git a/docs/document/android/releasenote.md b/docs/document/android/releasenote.md
index 02048f9ab..8decee05e 100644
--- a/docs/document/android/releasenote.md
+++ b/docs/document/android/releasenote.md
@@ -6,7 +6,10 @@
### 新增特性
-- [IM SDK] 新增[好友备注功能](user_relationship.html#设置好友备注)。
+- [IM SDK] 新增[设置好友备注功能](user_relationship.html#设置好友备注)。
+- [IM SDK] 新增 `asyncFetchAllContactsFromServer` 方法[从服务器一次性或分页获取好友列表](user_relationship.html#获取好友列表),每个好友对象包含好友的用户 ID 和好友备注。
+- [IM SDK] 新增 `fetchContactFromLocal` 方法[从本地获取单个好友的用户 ID 和好友备注](user_relationship.html#从服务端获取好友列表)。
+- [IM SDK] 新增 `asyncFetchAllContactsFromLocal` 方法[从本地分页获取好友列表](user_relationship.html#从本地获取好友列表),每个好友对象包含好友的用户 ID 和好友备注。
- [IM SDK] 新增 `EMMessage#isBroadcast` 属性用于判断通过该消息是否为聊天室全局广播消息。可通过[调用 REST API 发送聊天室全局广播消息](/document/server-side/message_chatroom.html#发送聊天室全局广播消息)。
- [IM SDK] 新增 `EMGroupManager#asyncGetJoinedGroupsCountFromServer` 方法用于[从服务器获取当前用户已加入的群组数量](group_manage.html#查询当前用户已加入的群组数量)。
- [IM SDK] 新增[错误码 706](error.html) `CHATROOM_OWNER_NOT_ALLOW_LEAVE`,表示聊天室所有者不允许离开聊天室。若初始化时,`EMOptions#allowChatroomOwnerLeave` 参数设置为 `false`,聊天室所有者调用 `leaveChatRoom` 方法离开聊天室时会提示该错误。
diff --git a/docs/document/android/user_relationship.md b/docs/document/android/user_relationship.md
index bf14f7de1..8e331d76e 100644
--- a/docs/document/android/user_relationship.md
+++ b/docs/document/android/user_relationship.md
@@ -125,12 +125,13 @@ EMClient.getInstance().contactManager().asyncSetContactRemark(userId, remark, ne
#### 获取好友列表
-- 从服务端获取好友列表:
+##### 从服务端获取好友列表
-调用以下两种方法返回好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
+ 自 4.2.1 版本开始,你可以调用 `asyncFetchAllContactsFromServer` 方法从服务器一次性或分页获取好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
+
+- 一次性从服务端获取整个好友列表。
```java
-//一次性从服务端获取整个好友列表
EMClient.getInstance().contactManager().asyncFetchAllContactsFromServer(new EMValueCallBack>() {
@Override
public void onSuccess(List value) {
@@ -142,8 +143,11 @@ EMClient.getInstance().contactManager().asyncFetchAllContactsFromServer(new EMVa
}
});
+```
-//从服务端分页获取好友列表
+- 从服务端分页获取好友列表。
+
+```java
// limit 的取值范围为 [1,50]
List contacts=new ArrayList<>();
String cursor= "";
@@ -171,7 +175,7 @@ private void doAsyncFetchAllContactsFromServer(List contacts, String
});
```
-你也可以调用 `getAllContactsFromServer` 方法从服务器获取所有好友的列表,该列表只包含好友的用户 ID。
+此外,你也可以调用 `getAllContactsFromServer` 方法从服务器获取所有好友的列表,该列表只包含好友的用户 ID。
```java
// 从服务器获取好友列表。
@@ -179,16 +183,17 @@ private void doAsyncFetchAllContactsFromServer(List contacts, String
List usernames = EMClient.getInstance().contactManager().getAllContactsFromServer();
```
-- 从本地获取好友列表
+##### 从本地获取好友列表
-调用以下两种方法返回好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
+ 自 4.2.1 版本开始,你可以调用 `asyncFetchAllContactsFromServer` 方法从本地获取单个好友的用户 ID 和好友备注;你也可以调用 `asyncFetchAllContactsFromLocal` 方法一次性获取整个好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
-:::notice
-需要从服务器获取好友列表之后,才能从本地获取到好友列表。
-:::
+ :::notice
+ 需要从服务器获取好友列表之后,才能从本地获取到好友列表。
+ :::
+
+- 从本地获取单个好友。
```java
-//从本地获取单个好友
try {
EMContact emContact = EMClient.getInstance().contactManager().fetchContactFromLocal(userId);
String remark = emContact.getRemark();
@@ -197,8 +202,11 @@ try {
} catch (HyphenateException e) {
EMLog.e(TAG, "fetchContactFromLocal error:" + e.getMessage());
};
+```
-//一次性从本地获取整个好友列表
+- 一次性从本地获取整个好友列表。
+
+```java
EMClient.getInstance().contactManager().asyncFetchAllContactsFromLocal(new EMValueCallBack>() {
@Override
public void onSuccess(List value) {
@@ -212,7 +220,7 @@ EMClient.getInstance().contactManager().asyncFetchAllContactsFromLocal(new EMVal
});
```
-你也可以调用 `getContactsFromLocal` 方法从本地获取所有好友的列表,该列表只包含好友的用户 ID。
+此外,你也可以调用 `getContactsFromLocal` 方法从本地一次性获取所有好友的列表,该列表只包含好友的用户 ID。
示例代码如下:
diff --git a/docs/document/ios/releasenote.md b/docs/document/ios/releasenote.md
index 32a136c5a..ba854c85c 100644
--- a/docs/document/ios/releasenote.md
+++ b/docs/document/ios/releasenote.md
@@ -6,7 +6,10 @@
### 新增特性
-- [IM SDK] 新增[好友备注功能](user_relationship.html#设置好友备注)。
+- [IM SDK] 新增[设置好友备注功能](user_relationship.html#设置好友备注)。
+- [IM SDK] 新增 `getAllContactsFromServerWithCompletion` 和 `getContactsFromServerWithCursor` 方法分别[从服务器一次性和分页获取好友列表](user_relationship.html#获取好友列表),每个好友对象包含好友的用户 ID 和好友备注。
+- [IM SDK] 新增 `getContact` 方法[从本地获取单个好友的用户 ID 和好友备注](user_relationship.html#获取好友列表)。
+- [IM SDK] 新增 `getAllContacts` 方法[从本地分页获取好友列表](user_relationship.html#获取好友列表),每个好友对象包含好友的用户 ID 和好友备注。
- [IM SDK] 新增 `EMChatMessage#broadcast` 属性用于判断通过该消息是否为聊天室全局广播消息。可通过[调用 REST API 发送聊天室全局广播消息](/document/server-side/message_chatroom.html#发送聊天室全局广播消息)。
- [IM SDK] 新增 `EMGroupManager#getJoinedGroupsCountFromServerWithCompletion` 方法用于[从服务器获取当前用户已加入的群组数量](group_manage.html#查询当前用户已加入的群组数量)。
- [IM SDK] 新增[错误码 706](error.html) `EMErrorChatroomOwnerNotAllowLeave`,表示聊天室所有者不允许离开聊天室。若初始化时,`EMOptions#canChatroomOwnerLeave` 参数设置为 `false`,聊天室所有者调用 `leaveChatroom` 方法离开聊天室时会提示该错误。
diff --git a/docs/document/ios/user_relationship.md b/docs/document/ios/user_relationship.md
index ca3e731aa..d993374e8 100644
--- a/docs/document/ios/user_relationship.md
+++ b/docs/document/ios/user_relationship.md
@@ -152,25 +152,29 @@ if (!aError) {
你可以从服务器获取好友列表,也可以从本地获取已保存的好友列表。
-- 从服务端获取好友列表
+1. 从服务端获取好友列表:
-调用以下两种方法返回好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
+ 自 4.2.0 版本开始,你可以调用 `getAllContactsFromServerWithCompletion` 或 `getContactsFromServerWithCursor` 方法从服务器一次性或分页获取好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
-```objectivec
+- 一次性从服务端获取整个好友列表。
+```objectivec
//一次性从服务端获取整个好友列表
[EMClient.sharedClient.contactManager getAllContactsFromServerWithCompletion:^(NSArray * _Nullable aList, EMError * _Nullable aError) {
}];
+```
-//从服务端分页获取好友列表
+- 从服务端分页获取好友列表。
+
+```objectivec
//pageSize 的取值范围为 [1,50]
[EMClient.sharedClient.contactManager getContactsFromServerWithCursor:@"" pageSize:50 completion:^(EMCursorResult * _Nullable aResult, EMError * _Nullable aError) {
}];
```
-你也可以调用 `getContactsFromServerWithCompletion` 方法从服务器获取所有好友的列表。该列表只包含好友的用户 ID。
+此外,你也可以调用 `getContactsFromServerWithCompletion` 方法从服务器获取所有好友的列表。该列表只包含好友的用户 ID。
```objectivec
// 从服务器获取好友列表。
@@ -184,25 +188,27 @@ if (!aError) {
}];
```
-- 从本地获取好友列表
+2. 从本地获取好友列表
-:::notice
-需要从服务器获取好友列表之后,才能从本地获取到好友列表。
-:::
+ :::notice
+ 需要从服务器获取好友列表之后,才能从本地获取到好友列表。
+ :::
-调用以下两种方法返回好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
+ 自 4.2.0 版本开始,你可以调用 `getContact` 方法从本地获取单个好友的用户 ID 和好友备注;你也可以调用 `getAllContacts` 方法一次性获取整个好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
+
+- 从本地获取单个好友。
```objectivec
-//从本地获取单个好友
EMContact* contact = [EMClient.sharedClient.contactManager getContact:@"userId"];
+```
+- 一次性从本地获取整个好友列表。
-//一次性从本地获取整个好友列表
+```objectivec
NSArray* contacts = [EMClient.sharedClient.contactManager getAllContacts];
-
```
-你也可以调用 `getContacts` 方法从本地获取所有好友的列表,该列表只包含好友的用户 ID。
+此外,你也可以调用 `getContacts` 方法从本地一次性获取所有好友的列表,该列表只包含好友的用户 ID。
示例代码如下:
diff --git a/docs/document/web/releasenote.md b/docs/document/web/releasenote.md
index 38b273a07..e9cf12f79 100644
--- a/docs/document/web/releasenote.md
+++ b/docs/document/web/releasenote.md
@@ -6,7 +6,8 @@
### 新增特性
-- [IM SDK] 新增[好友备注功能](user_relationship.html#设置好友备注)。
+- [IM SDK] 新增[设置好友备注功能](user_relationship.html#设置好友备注)。
+- [IM SDK] 新增 `getAllContacts` 和 `getContactsWithCursor` 方法分别用于一次性和分页获取好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
- [IM SDK] 消息结构新增 `broadcast` 字段, 用于判断该消息是否为聊天室全局广播消息。可通过[调用 REST API 发送聊天室全局广播消息](/document/server-side/message_chatroom.html#发送聊天室全局广播消息)。
### 优化
diff --git a/docs/document/web/user_relationship.md b/docs/document/web/user_relationship.md
index 4bbc1225d..ebd83ff79 100644
--- a/docs/document/web/user_relationship.md
+++ b/docs/document/web/user_relationship.md
@@ -109,10 +109,11 @@ conn
#### 获取好友列表
-调用以下两种方法返回好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
+自 4.3.0 版本,你可以调用 `getAllContacts` 或 `getContactsWithCursor` 方法一次性或分页获取好友列表,其中每个好友对象包含好友的用户 ID 和好友备注。
+
+- 一次性获取全部好友列表:
```javascript
-// 一次性获取全部好友列表
conn
.getAllContacts()
.then((res) => {
@@ -121,9 +122,11 @@ conn
.catch((e) => {
console.log(e, 'getAllContacts failed');
});
+```
+- 分页获取好友列表:
-// 分页获取好友列表
+```javascript
conn
.getContactsWithCursor({
pageSize: 20, // 每页期望获取的联系人数量。取值范围为 [1,50],默认为 `20`。
@@ -137,7 +140,7 @@ conn
});
```
-你可以调用 `getContacts` 方法从服务端获取所有好友的列表,该列表只包含好友的用户 ID。
+此外,你可以调用 `getContacts` 方法从服务端一次性获取好友列表,该列表只包含好友的用户 ID。
```javascript
conn.getContacts().then((res) => {