Skip to content

Commit 255ebd6

Browse files
authored
Merge pull request #1374 from haoxiuwen/doc-v2
Modify Flutter Message Receiving Doc & User Attributes Docs
2 parents b775810 + 0f33412 commit 255ebd6

File tree

14 files changed

+124
-115
lines changed

14 files changed

+124
-115
lines changed

docs/document/android/error.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Android 中错误码的类为 [EMError](https://sdkdocs.easemob.com/apidoc/andro
1414
| 1 | GENERAL_ERROR | SDK 或请求相关的默认错误,未区分具体错误类型:例如,SDK 内部未正确初始化,或者请求服务器时未识别出具体原因的错误。 | 需要结合日志和调用的 API 进行分析。 |
1515
| 2 | NETWORK_ERROR | 网络错误:无网络服务时会回调此错误,表示 SDK 与服务器的连接已断开。 | 群组/聊天室操作时,如果无网络,可能返回该错误,可以在网络恢复后,重复操作。 |
1616
| 3 | DATABASE_ERROR | 数据库操作失败:打开本地数据库失败。 | 需要根据调用的 API 结合日志分析,如果使用 `EMConversation#updateMessage` 方法更新一条本地不存在的消息,可能返回该错误;在数据库未打开时,调用其他本地数据库操作,也可能返回该错误。|
17-
| 4 | EXCEED_SERVICE_LIMIT | 超过服务限制:超过当前服务版本的数量限制,例如,创建的用户 ID 数量超过购买服务的限制时提示该错误;设置和获取用户属性的接口,包括[设置当前用户的属性](userprofile.html#设置当前用户的属性)[获取单个或多个用户的用户属性](userprofile.html#获取用户属性)[获取指定用户的指定用户属性](userprofile.html#获取指定用户的指定用户属性),超过调用频率限制时,会上报该错误。 | 检查调用的 API,若传入 `limit` 参数,可将该参数控制在限制内,如果是限流导致,可以在延后一段时间重新调用。 |
17+
| 4 | EXCEED_SERVICE_LIMIT | 超过服务限制:超过当前服务版本的数量限制,例如,创建的用户 ID 数量超过购买服务的限制时提示该错误;设置和获取用户属性的接口,包括 [设置当前用户的属性](userprofile.html#设置当前用户的所有属性)[获取用户的所有属性](userprofile.html#获取用户的所有属性)[获取用户的指定属性](userprofile.html#获取用户的指定属性),超过调用频率限制时,会上报该错误。 | 检查调用的 API,若传入 `limit` 参数,可将该参数控制在限制内,如果是限流导致,可以在延后一段时间重新调用。 |
1818
| 8 | APP_ACTIVE_NUMBER_REACH_LIMITATION | 应用程序的日活跃用户数量(DAU)或月活跃用户数量(MAU)达到上限。 | 需在[环信控制台](https://console.easemob.com/user/login)对 IM 服务进行升级。 |
1919
| 100 | INVALID_APP_KEY | App Key 不合法:用户的 App Key 格式不正确。可在[环信控制台](https://console.easemob.com/user/login)**应用详情** 页面查看 App Key。 | 使用正确的 App Key 进行初始化。 |
2020
| 101 | INVALID_USER_NAME | 用户 ID 不正确:一般情况下,用户 ID 为空时提示该错误,例如,邀请好友时 username 参数为空字符。 | 检查报错的 API 中传入的用户 ID 参数是否为空。|

docs/document/android/releasenote.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@
227227

228228
### 优化
229229

230-
- [IM SDK] 设置和获取用户属性的接口,包括[设置当前用户的属性](userprofile.html#设置当前用户的属性)[获取单个或多个用户的用户属性](userprofile.html#获取用户属性)[获取指定用户的指定用户属性](userprofile.html#获取指定用户的指定用户属性),超过调用频率限制时,会上报错误码 4 `EXCEED_SERVICE_LIMIT`
230+
- [IM SDK] 设置和获取用户属性的接口,包括 [设置当前用户的所有属性](userprofile.html#设置当前用户的所有属性)[设置当前用户的单个属性](userprofile.html#设置当前用户的单个属性)[获取用户的用户属性](userprofile.html#获取用户的所有属性)[获取用户的指定用户属性](userprofile.html#获取用户的指定属性),超过调用频率限制时,会上报错误码 4 `EXCEED_SERVICE_LIMIT`
231231

232232
### 修复
233233

docs/document/android/userprofile.md

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818

1919
环信即时通讯 IM Android SDK 提供一个 [EMUserInfoManager](https://sdkdocs.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1_e_m_user_info_manager.html) 类,支持获取、设置及修改用户属性信息,其中包含如下方法:
2020

21-
- `updateOwnInfo` 设置和修改当前用户自己的属性信息
22-
- `updateOwnInfoByAttribute` 设置和修改用户信息中的某个属性
23-
- `fetchUserInfoByUserId` 获取指定用户的所有用户属性信息
24-
- `fetchUserInfoByAttribute` 获取指定环信用户 ID 和指定用户的用户属性
21+
- `updateOwnInfo` 设置和修改当前用户自己的所有属性
22+
- `updateOwnInfoByAttribute` 设置和修改用户的某个属性
23+
- `fetchUserInfoByUserId` 获取单个或多个用户的所有用户属性
24+
- `fetchUserInfoByAttribute` 获取单个用户的单个或多个用户属性
2525

2626
## 前提条件
2727

@@ -34,14 +34,13 @@
3434

3535
本节介绍如何在项目中设置及获取用户属性。
3636

37-
实现过程中注意单个用户的所有属性最大不超过 2 KB,单个 app 所有用户属性数据最大不超过 10 GB。
37+
单个用户的所有属性最大不超过 2 KB,单个 app 所有用户属性数据最大不超过 10 GB。
3838

39-
### 设置当前用户的属性
39+
### 设置当前用户的所有属性
4040

41-
参考如下示例代码,在你的项目中当前用户设置自己的所有属性或者仅设置某一项属性。
41+
当前用户设置自己的所有属性:
4242

4343
```java
44-
// 设置所有用户属性。
4544
EMUserInfo userInfo = new EMUserInfo();
4645
userInfo.setUserId(EMClient.getInstance().getCurrentUser());
4746
userInfo.setNickname("easemob");
@@ -60,20 +59,9 @@ EMClient.getInstance().userInfoManager().updateOwnInfo(userInfo, new EMValueCall
6059
public void onError(int error, String errorMsg) {
6160
}
6261
});
63-
// 以修改用户头像为例,演示如何修改指定用户属性。
64-
String url = "https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/IMDemo/avatar/Image1.png";
65-
EMClient.getInstance().userInfoManager().updateOwnInfoByAttribute(EMUserInfoType.AVATAR_URL, url, new EMValueCallBack<String>() {
66-
@Override
67-
public void onSuccess(String value) {
68-
}
69-
70-
@Override
71-
public void onError(int error, String errorMsg) {
72-
}
73-
});
7462
```
7563

76-
关于用户属性,客户端针对用户的昵称、头像 URL、联系方式、邮箱、性别、签名、生日和扩展字段默认使用以下键名。[调用 RESTful 的接口设置](/document/server-side/userprofile.html#设置用户属性)[删除用户属性](/document/server-side/userprofile.html#删除用户属性),若要确保在客户端能够获取设置,请求中必须传以下键名与客户端保持一致,键值可根据实际使用场景确定。
64+
关于用户属性,客户端针对用户的昵称、头像 URL、联系方式、邮箱、性别、签名、生日和扩展字段默认使用以下键名。[调用 RESTful 的接口设置](/document/server-side/userprofile.html#设置用户属性) [删除用户属性](/document/server-side/userprofile.html#删除用户属性),若要确保在客户端能够获取设置,请求中必须传以下键名与客户端保持一致,键值可根据实际使用场景确定。
7765

7866
| 字段 | 类型 | 描述 |
7967
| :---------- | :----- | :------------------------------------------------------------------------------------------------ |
@@ -86,23 +74,38 @@ EMClient.getInstance().userInfoManager().updateOwnInfoByAttribute(EMUserInfoType
8674
| `birth` | String | 用户生日。长度在 64 字符内。 |
8775
| `ext` | String | 扩展字段。 |
8876

89-
### 获取用户属性
77+
### 设置当前用户的单个属性
78+
79+
例如,修改当前用户的头像:
80+
81+
```java
82+
String url = "https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/IMDemo/avatar/Image1.png";
83+
EMClient.getInstance().userInfoManager().updateOwnInfoByAttribute(EMUserInfoType.AVATAR_URL, url, new EMValueCallBack<String>() {
84+
@Override
85+
public void onSuccess(String value) {
86+
}
87+
88+
@Override
89+
public void onError(int error, String errorMsg) {
90+
}
91+
});
92+
```
9093

91-
用户可以获取指定一个或多个用户的全部用户属性。
94+
### 获取用户的所有属性
9295

93-
示例代码如下:
96+
用户可以获取指定一个或多个用户的所有用户属性。
9497

9598
```java
96-
// 获取一个或多个用户的所有属性,一次调用用户 ID 数量不超过 100。
99+
// 每次传入的用户 ID 数量不超过 100
97100
String[] userId = new String[1];
98101
//username 指用户 ID。
99102
userId[0] = username;
100103
EMClient.getInstance().userInfoManager().fetchUserInfoByUserId(userId, new EMValueCallBack<Map<String, EMUserInfo>>() {});
101104
```
102105

103-
### 获取指定用户的指定用户属性
106+
### 获取用户的指定属性
104107

105-
用户可以获取指定用户的指定用户属性信息
108+
用户可以获取单个用户的单个或多个用户属性
106109

107110
```java
108111
String[] userId = new String[1];
@@ -154,13 +157,13 @@ EMClient.getInstance().chatManager().sendMessage(message);
154157

155158
Q:我设置了用户昵称(`nickname`),但调用客户端或 RESTful API 获取用户属性时,未返回用户昵称,原因是什么?
156159

157-
A:你可以调用[客户端](#设置当前用户的属性)[RESTful API](/document/server-side/userprofile.html#设置用户属性) 设置用户昵称,例如 Android 为 `updateOwnInfo`,然后通过[客户端](#获取用户属性)[RESTful API](/document/server-side/userprofile.html#获取用户属性) 获取用户属性,例如 Android 为 `fetchUserInfoByAttribute`
160+
A:你可以调用 [客户端](#设置当前用户的所有属性) [RESTful API](/document/server-side/userprofile.html#设置用户属性) 设置用户昵称,例如 Android 为 `updateOwnInfo`,然后通过 [客户端](#获取用户的指定属性)[RESTful API](/document/server-side/userprofile.html#获取用户属性) 获取用户属性,例如 Android 为 `fetchUserInfoByAttribute`
158161

159162
设置用户昵称时,请注意以下两点:
160163

161164
1. 调用 RESTful 接口设置用户昵称时,若要确保在客户端能够获取设置,请求中必须传 `nickname` 键名。
162165

163-
2. 调用 RESTful API [获取用户详情](/document/server-side/account_system.html#获取用户详情)[删除用户账户](/document/server-side/account_system.html#删除用户账号)中返回的响应中的 `nickname` 参数表示为推送昵称,即离线推送时在接收方的客户端推送通知栏中显示的发送方的昵称,与用户属性中的用户昵称不同。不过,我们建议这两种昵称的设置保持一致。因此,修改其中一个昵称时,也需调用相应方法对另一个进行更新,确保设置一致。例如,对于 Android,更推送昵称的方法为 [updatePushNickname](/document/android/push/push_display.html#设置推送通知的显示属性),对于 RESTful API,详见 [离线推送通知的显示属性配置](/document/server-side/push.html#设置离线推送时显示的昵称)
166+
2. 调用 RESTful API [获取用户详情](/document/server-side/account_system.html#获取用户详情) [删除用户账户](/document/server-side/account_system.html#删除用户账号) 中返回的响应中的 `nickname` 参数表示为推送昵称,即离线推送时在接收方的客户端推送通知栏中显示的发送方的昵称,与用户属性中的用户昵称不同。不过,我们建议这两种昵称的设置保持一致。因此,修改其中一个昵称时,也需调用相应方法对另一个进行更新,确保设置一致。例如,对于 Android,更推送昵称的方法为 [updatePushNickname](/document/android/push/push_display.html#设置推送通知的显示属性),对于 RESTful API,详见 [离线推送通知的显示属性配置](/document/server-side/push.html#设置离线推送时显示的昵称)
164167

165168
Q: 调用设置或获取用户属性的接口时,上报错误码 4 的原因是什么?
166169

docs/document/flutter/message_receive.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class _ChatMessagesPageState extends State<ChatMessagesPage> {
5353

5454
1. 接收附件消息。SDK 自动下载语音消息,默认自动下载图片和视频的缩略图。若下载原图、视频和文件,需调用 `downloadAttachment` 方法。
5555
2. 获取附件的服务器地址和本地路径。
56+
3. 自 4.15.0 版本开始,即时通讯 IM 支持消息附件下载鉴权功能。该功能默认关闭,如要开通需联系环信商务。该功能开通后,用户必须调用 SDK 的 `downloadAttachment` 方法下载消息附件。
5657

5758
### 接收语音消息
5859

docs/document/harmonyos/userprofile.md

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
环信即时通讯 IM HarmonyOS SDK 提供一个 `UserInfoManager` 类,支持获取、设置及修改用户属性信息,其中包含如下方法:
1818

19-
- `updateUserInfo` 设置和修改当前用户自己的属性信息;
20-
- `fetchUserInfoById` 获取指定用户的属性信息
19+
- `updateUserInfo` 设置当前用户的所有属性或单个属性
20+
- `fetchUserInfoById` 获取指定一个或多个用户的全部用户属性;获取单个用户的单个或多个用户属性
2121

2222
## 前提条件
2323

@@ -32,12 +32,11 @@
3232

3333
实现过程中注意单个用户的所有属性最大不超过 2 KB,单个 app 所有用户属性数据最大不超过 10 GB。
3434

35-
### 设置当前用户的属性
35+
### 设置当前用户的所有属性
3636

37-
参考如下示例代码,在你的项目中当前用户设置自己的所有属性或者仅设置某一项属性。
37+
当前用户设置自己的所有属性:
3838

3939
```typescript
40-
// 设置所有用户属性。
4140
let userInfo: UserInfo = {
4241
nickname: "easemob",
4342
avatarUrl: "https://www.easemob.com",
@@ -53,17 +52,6 @@ ChatClient.getInstance().userInfoManager()?.updateUserInfo(userInfo).then(result
5352
}).catch((e: ChatError) => {
5453
// failure logic
5554
});
56-
57-
58-
// 以修改用户头像为例,演示如何修改指定用户属性。
59-
let userInfo: UserInfo = {
60-
avatarUrl: "https://xxx/downloads/IMDemo/avatar/Image1.png"
61-
}
62-
ChatClient.getInstance().userInfoManager()?.updateUserInfo(userInfo).then(result => {
63-
// success logic
64-
}).catch((e: ChatError) => {
65-
// failure logic
66-
});
6755
```
6856

6957
关于用户属性,客户端针对用户的昵称、头像 URL、联系方式、邮箱、性别、签名、生日和扩展字段默认使用以下键名。[调用 RESTful 的接口设置](/document/server-side/userprofile.html#设置用户属性)[删除用户属性](/document/server-side/userprofile.html#删除用户属性),若要确保在客户端能够获取设置,请求中必须传以下键名与客户端保持一致,键值可根据实际使用场景确定。
@@ -79,7 +67,24 @@ ChatClient.getInstance().userInfoManager()?.updateUserInfo(userInfo).then(result
7967
| `birth` | String | 用户生日。长度在 64 字符内。 |
8068
| `ext` | String | 扩展字段。 |
8169

82-
### 获取用户属性
70+
### 设置当前用户的单个属性
71+
72+
例如,修改当前用户的头像:
73+
74+
```typescript
75+
let userInfo: UserInfo = {
76+
avatarUrl: "https://xxx/downloads/IMDemo/avatar/Image1.png"
77+
}
78+
ChatClient.getInstance().userInfoManager()?.updateUserInfo(userInfo).then(result => {
79+
// success logic
80+
}).catch((e: ChatError) => {
81+
// failure logic
82+
});
83+
```
84+
85+
86+
87+
### 获取用户的所有属性
8388

8489
用户可以从服务端获取指定一个或多个用户的全部用户属性。
8590

@@ -96,9 +101,9 @@ ChatClient.getInstance().userInfoManager()?.fetchUserInfoById(userIds).then(resu
96101
});
97102
```
98103

99-
### 获取指定用户的指定用户属性
104+
### 获取用户的指定属性
100105

101-
用户可以从服务端获取指定用户的指定用户属性信息
106+
用户可以获取单个用户的单个或多个用户属性
102107

103108
```typescript
104109
let userIds = new Array<string>();
@@ -128,7 +133,7 @@ ChatClient.getInstance().userInfoManager()?.fetchUserInfoById(userIds, userTypes
128133

129134
Q:我设置了用户昵称(`nickname`),但调用客户端或 RESTful API 获取用户属性时,未返回用户昵称,原因是什么?
130135

131-
A:你可以调用[客户端](#设置当前用户的属性)[RESTful API](/document/server-side/userprofile.html#设置用户属性) 设置用户昵称,例如,调用 `updateUserInfo`,然后通过[客户端](#获取用户属性)[RESTful API](/document/server-side/userprofile.html#获取用户属性) 获取用户属性,例如 SDK 为 `fetchUserInfoById`
136+
A:你可以调用 [客户端](#设置当前用户的所有属性) [RESTful API](/document/server-side/userprofile.html#设置用户属性) 设置用户昵称,例如,调用 `updateUserInfo`,然后通过 [客户端](#获取用户的所有属性)[RESTful API](/document/server-side/userprofile.html#获取用户属性) 获取用户属性,例如 SDK 为 `fetchUserInfoById`
132137

133138
设置用户昵称时,请注意以下:
134139

docs/document/ios/error.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ iOS 的错误码只有当操作出错的时候才会有返回值,否则返回
1616
| 1 | EMErrorGeneral | SDK 或请求相关的默认错误,未区分具体错误类型:例如,SDK 内部未正确初始化,或者请求服务器时未识别出具体原因的错误。| 需要结合日志和调用的 API 进行分析。 |
1717
| 2 | EMErrorNetworkUnavailable | 网络错误:无网络服务时会回调此错误,表示 SDK 与服务器的连接已断开。 | 群组/聊天室操作时,如果无网络,可能返回该错误,可以在网络恢复后,重复操作。 |
1818
| 3 | EMErrorDatabaseOperationFailed | 数据库操作失败:打开本地数据库失败。 | 需要根据调用的 API 结合日志分析,如果使用 `EMConversation#updateMessage` 方法更新一条本地不存在的消息,可能返回该错误;在数据库未打开时,调用其他本地数据库操作,也可能返回该错误。 |
19-
| 4 | EMErrorExceedServiceLimit | 超过服务限制:超过当前服务版本的数量限制,例如,创建的用户 ID 数量超过购买服务的限制时提示该错误;设置和获取用户属性的接口,包括[设置当前用户的属性](userprofile.html#设置当前用户的属性)[获取单个或多个用户的用户属性](userprofile.html#获取用户属性)[获取指定用户的指定用户属性](userprofile.html#获取指定用户的指定用户属性),超过调用频率限制时,会上报该错误。| 检查调用的 API,若传入 `limit` 参数,可将该参数控制在上限内,若是限流导致,可以在延后一段时间重新调用。 |
19+
| 4 | EMErrorExceedServiceLimit | 超过服务限制:超过当前服务版本的数量限制,例如,创建的用户 ID 数量超过购买服务的限制时提示该错误;设置和获取用户属性的接口,包括[设置当前用户的属性](userprofile.html#设置当前用户的所有属性)[获取单个或多个用户的用户属性](userprofile.html#获取用户的所有属性)[获取指定用户的指定用户属性](userprofile.html#获取用户的指定属性),超过调用频率限制时,会上报该错误。| 检查调用的 API,若传入 `limit` 参数,可将该参数控制在上限内,若是限流导致,可以在延后一段时间重新调用。 |
2020
| 8 | EMAppActiveNumbersReachLimitation | 应用程序的日活跃用户数量(DAU)或月活跃用户数量(MAU)达到上限。 | 需在[环信控制台](https://console.easemob.com/user/login)对 IM 服务进行升级。 |
2121
| 100 | EMErrorInvalidAppkey | App Key 不合法:用户的 App Key 格式不正确。可在[环信控制台](https://console.easemob.com/user/login)**应用详情** 页面查看 App Key。 | 使用正确的 App Key 进行初始化。 |
2222
| 101 | EMErrorInvalidUsername | 用户 ID 不正确:一般情况下,用户 ID 为空时提示该错误,例如,邀请好友时 username 参数为空字符。 | 检查报错API 中传入的用户 ID 参数是否为空。 |

0 commit comments

Comments
 (0)