Skip to content

Commit ece463d

Browse files
authored
Merge pull request #32 from haoxiuwen/doc-shengwang
Replace SDK Code for Agora IM
2 parents ad3bc69 + 0c70569 commit ece463d

File tree

332 files changed

+9815
-9784
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

332 files changed

+9815
-9784
lines changed
175 KB
Loading
79.6 KB
Loading
55.4 KB
Loading

docs/document/android/connection.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
你可以通过注册连接监听确认连接状态。
1010

1111
```java
12-
EMConnectionListener connectionListener = new EMConnectionListener() {
12+
ConnectionListener connectionListener = new ConnectionListener() {
1313
@Override
1414
public void onConnected() {
1515

@@ -47,9 +47,9 @@ EMConnectionListener connectionListener = new EMConnectionListener() {
4747
}
4848
};
4949
// 注册连接状态监听
50-
EMClient.getInstance().addConnectionListener(connectionListener);
50+
ChatClient.getInstance().addConnectionListener(connectionListener);
5151
// 移除连接状态监听
52-
EMClient.getInstance().removeConnectionListener(connectionListener);
52+
ChatClient.getInstance().removeConnectionListener(connectionListener);
5353
```
5454

5555
## 自动重连

docs/document/android/conversation_delete.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030

3131
```java
3232
//获取指定的会话 ID。
33-
EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId);
33+
Conversation conversation = ChatClient.getInstance().chatManager().getConversation(conversationId);
3434

3535
// 删除指定会话。如果需要保留服务端和本地的历史消息,`isDeleteServerMessages` 传 `false`。
36-
EMClient.getInstance().chatManager().deleteConversationFromServer(conversationId, conversationType, isDeleteServerMessages, new EMCallBack() {
36+
ChatClient.getInstance().chatManager().deleteConversationFromServer(conversationId, conversationType, isDeleteServerMessages, new CallBack() {
3737
@Override
3838
public void onSuccess() {
3939

@@ -52,11 +52,11 @@ EMClient.getInstance().chatManager().deleteConversationFromServer(conversationId
5252

5353
```java
5454
// 删除指定用户的会话,如果需要保留历史消息,传 `false`。
55-
EMClient.getInstance().chatManager().deleteConversation(conversationId, true);
55+
ChatClient.getInstance().chatManager().deleteConversation(conversationId, true);
5656
```
5757

5858
```java
5959
// 删除指定会话中指定的一条历史消息。
60-
EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId);
60+
Conversation conversation = ChatClient.getInstance().chatManager().getConversation(conversationId);
6161
conversation.removeMessage(deleteMsg.msgId);
6262
```

docs/document/android/conversation_list.md

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
对于单聊、群组聊天和聊天室会话,用户发消息时 SDK 会自动创建会话并将会话添加至用户的会话列表。
66

7-
环信服务器和本地均存储会话,你可以获取会话列表。
7+
声网服务器和本地均存储会话,你可以获取会话列表。
88

99
## 前提条件
1010

1111
开始前,请确保满足以下条件:
1212

1313
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)
14-
- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)
14+
- 了解即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)
1515

1616
## 技术原理
1717

@@ -28,12 +28,12 @@
2828

2929
你可以调用 `asyncFetchConversationsFromServer` 方法从服务端分页获取会话列表,包含单聊和群组聊天会话,不包含聊天室会话。SDK 按照会话活跃时间(会话的最新一条消息的时间戳)的倒序返回会话列表,每个会话对象中包含会话 ID、会话类型、是否为置顶状态、置顶时间(对于未置顶的会话,值为 `0`)、会话标记以及最新一条消息。从服务端拉取会话列表后会更新本地会话列表。
3030

31-
对于每个终端用户,服务器默认存储 100 条会话。超过该限制后,新会话会覆盖旧会话。若会话中的历史消息均过期,会话变成空会话。从服务端拉取会话列表时默认不包含这些空会话,若要包含,需在 SDK 初始化时将 `EMOptions#isLoadEmptyConversations` 设置为 `true`。这种情况下,空会话都会占用会话拉取名额,不管拉取时是否需要。如果拉取会话时不需要空会话且不希望其占用会话列表名额,需要联系商务开通。
31+
**对于每个终端用户,服务器默认存储 100 条会话,若提升该上限,需联系声网商务。**超过限制后,新会话会覆盖旧会话。若会话中的历史消息均过期,会话变成空会话。从服务端拉取会话列表时默认不包含这些空会话,若要包含,需在 SDK 初始化时将 `ChatOptions#isLoadEmptyConversations` 设置为 `true`。这种情况下,空会话都会占用会话拉取名额,不管拉取时是否需要。如果拉取会话时不需要空会话且不希望其占用会话列表名额,需要联系商务开通。
3232

3333
:::tip
34-
1. **若使用该功能,需在环信控制台开通,并将 SDK 升级至 4.0.3。而且,只有开通该功能,你才能使用置顶会话和会话标记功能**
34+
1. **若你当前套餐不支持该功能,需升级产品套餐**
3535
2. 建议你在首次下载、卸载后重装应用等本地数据库无数据情况下拉取服务端会话列表。其他情况下,调用 `asyncFilterConversationsFromDB``getAllConversationsBySort``getAllConversations` 方法获取本地所有会话即可。
36-
3. 通过 RESTful 接口发送的消息默认不创建或写入会话。若会话中的最新一条消息通过 RESTful 接口发送,获取会话列表时,该会话中的最新一条消息显示为通过非 RESTful 接口发送的最新消息。若要开通 RESTful 接口发送的消息写入会话列表的功能,需在[环信即时通讯控制台开通](/product/enable_and_configure_IM.html#设置通过-restful-api-发送的消息写入会话列表)
36+
3. 通过 RESTful 接口发送的消息默认不创建或写入会话。若会话中的最新一条消息通过 RESTful 接口发送,获取会话列表时,该会话中的最新一条消息显示为通过非 RESTful 接口发送的最新消息。若需要 RESTful 接口发送的消息写入会话列表,需联系声网商务
3737
:::
3838

3939
示例代码如下:
@@ -43,11 +43,11 @@
4343
// cursor: 开始获取数据的游标位置。若获取数据时传 `null` 或者空字符串(""),SDK 从最新活跃的会话开始获取。
4444
int limit = 10;
4545
String cursor = "";
46-
EMClient.getInstance().chatManager().asyncFetchConversationsFromServer(limit, cursor, new EMValueCallBack<EMCursorResult<EMConversation>>() {
46+
ChatClient.getInstance().chatManager().asyncFetchConversationsFromServer(limit, cursor, new ValueCallBack<CursorResult<Conversation>>() {
4747
@Override
48-
public void onSuccess(EMCursorResult<EMConversation> result) {
48+
public void onSuccess(CursorResult<Conversation> result) {
4949
// 获取到的会话列表
50-
List<EMConversation> conversations = result.getData();
50+
List<Conversation> conversations = result.getData();
5151
// 下一次请求的 cursor
5252
String nextCursor = result.getCursor();
5353
}
@@ -63,22 +63,22 @@ EMClient.getInstance().chatManager().asyncFetchConversationsFromServer(limit, cu
6363

6464
你可以调用 `asyncFilterConversationsFromDB` 方法,获取本地所有会话(`filter` 参数为 `null`)或筛选会话。
6565

66-
如果要筛选会话,你需要自己实现 `EMCustomConversationFilter` 接口中的过滤器 `filter`,根据 `filter` 方法中传递过来的会话对象 `emConversation` 自己决定是返回 `true` 还是 `false`。如果返回 `true`,这条会话会被添加到内存中,并最终在 `callback` 中返回给调用者,如果返回 `false`,会话会被舍弃,不会被添加到内存中,不会在 `callback` 中返回给调用者。
66+
如果要筛选会话,你需要自己实现 `CustomConversationFilter` 接口中的过滤器 `filter`,根据 `filter` 方法中传递过来的会话对象 `emConversation` 自己决定是返回 `true` 还是 `false`。如果返回 `true`,这条会话会被添加到内存中,并最终在 `callback` 中返回给调用者,如果返回 `false`,会话会被舍弃,不会被添加到内存中,不会在 `callback` 中返回给调用者。
6767

6868
:::tip
6969
若使用该功能,需将 SDK 升级至 4.6.0。
7070
:::
7171

7272
```java
73-
EMClient.getInstance().chatManager().asyncFilterConversationsFromDB(new EMCustomConversationFilter() {
73+
ChatClient.getInstance().chatManager().asyncFilterConversationsFromDB(new CustomConversationFilter() {
7474
@Override
75-
public boolean filter(EMConversation emConversation) {
75+
public boolean filter(Conversation emConversation) {
7676
//在这里可以根据会话 emConversation 的属性决定返回 true 或 false 来过滤会话。
7777
return true;
7878
}
79-
},false, new EMValueCallBack<List<EMConversation>>() {
79+
},false, new ValueCallBack<List<Conversation>>() {
8080
@Override
81-
public void onSuccess(List<EMConversation> filterConversations) {
81+
public void onSuccess(List<Conversation> filterConversations) {
8282
//filterConversations 为最终过滤后的会话结果。
8383
}
8484

@@ -93,12 +93,12 @@ EMClient.getInstance().chatManager().asyncFilterConversationsFromDB(new EMCustom
9393

9494
| 选项 | 描述 |
9595
| :--------- | :----- |
96-
| `com.hyphenate.chat.EMOptions#setDeleteMessagesAsExitChatRoom` | 通过该选项确定获取本地会话时是否返回聊天室会话。默认情况下,只包含单聊和群组聊天会话。<br/> - `true`:离开聊天室时删除该聊天室的所有本地消息,则本地会话列表中不包含聊天室会话。<br/> - `false`:离开聊天室时保留该聊天室的所有本地消息,则本地会话列表中包含聊天室会话。|
97-
|`EMOptions#setLoadEmptyConversations` | 获取本地会话时是否包含空会话:<br/> - `true`:返回空会话。<br/> - `false`:不包含空会话。|
96+
| `io.agora.chat.ChatOptions#setDeleteMessagesAsExitChatRoom` | 通过该选项确定获取本地会话时是否返回聊天室会话。默认情况下,只包含单聊和群组聊天会话。<br/> - `true`:离开聊天室时删除该聊天室的所有本地消息,则本地会话列表中不包含聊天室会话。<br/> - `false`:离开聊天室时保留该聊天室的所有本地消息,则本地会话列表中包含聊天室会话。|
97+
|`ChatOptions#setLoadEmptyConversations` | 获取本地会话时是否包含空会话:<br/> - `true`:返回空会话。<br/> - `false`:不包含空会话。|
9898

9999
### 一次性获取本地所有会话
100100

101-
- 要一次性获取本地所有会话,你可以调用 `getAllConversationsBySort` 方法。SDK 首先从内存中获取会话,若会话未从本地数据库加载过,SDK 会先将数据库中的会话加载到内存。获取会话后,SDK 按照会话活跃时间(最新一条消息的时间戳)的倒序返回会话,置顶会话在前,非置顶会话在后,会话列表为 `List<EMConversation>` 结构。
101+
- 要一次性获取本地所有会话,你可以调用 `getAllConversationsBySort` 方法。SDK 首先从内存中获取会话,若会话未从本地数据库加载过,SDK 会先将数据库中的会话加载到内存。获取会话后,SDK 按照会话活跃时间(最新一条消息的时间戳)的倒序返回会话,置顶会话在前,非置顶会话在后,会话列表为 `List<Conversation>` 结构。
102102

103103
:::tip
104104
若使用该功能,需将 SDK 升级至 4.0.3。
@@ -107,16 +107,16 @@ EMClient.getInstance().chatManager().asyncFilterConversationsFromDB(new EMCustom
107107
示例代码如下:
108108

109109
```java
110-
List<EMConversation> conversations = EMClient.getInstance().chatManager().getAllConversationsBySort();
110+
List<Conversation> conversations = ChatClient.getInstance().chatManager().getAllConversationsBySort();
111111
```
112112

113-
- 你也可以调用 `getAllConversations` 方法返回 `Map <String, EMConversation>` 结构的会话。
113+
- 你也可以调用 `getAllConversations` 方法返回 `Map <String, Conversation>` 结构的会话。
114114

115115
**两个 API 与自动加载会话之间的关系**
116116

117-
SDK 初始化时,你可以设置 `EMOptions#setAutoLoadAllConversations` 方法,确定用户自动登录成功后是否将数据库中的会话自动加载到内存。
118-
- `true`:数据库中的所有会话会自动加载到内存。调用 `EMChatManager#getAllConversationsBySort``EMChatManager#getAllConversations` 时,若内存中没有任何缓存的会话,SDK 会首先将数据库中的会话加载到内存,然后返回获取的会话。
119-
- `false`:会话不会自动加载,节省内存。调用 `EMChatManager#getAllConversationsBySort``EMChatManager#getAllConversations` 时,若内存中没有任何缓存的会话,获取到的会话数为 0,SDK 不会将数据库中的会话加载到内存。而且,这种情况下,调用 `EMChatManager#getUnreadMessageCount` 方法获取到的未读消息数也为 0。这种情况下,若需要通过这三个 API 获取所有会话及未读数,需要先调用 `EMChatManager#loadAllConversations` 或者 `EMChatManager#asyncFilterConversationsFromDB` 方法将数据库中的会话加载到内存。
117+
SDK 初始化时,你可以设置 `ChatOptions#setAutoLoadAllConversations` 方法,确定用户自动登录成功后是否将数据库中的会话自动加载到内存。
118+
- `true`:数据库中的所有会话会自动加载到内存。调用 `ChatManager#getAllConversationsBySort``ChatManager#getAllConversations` 时,若内存中没有任何缓存的会话,SDK 会首先将数据库中的会话加载到内存,然后返回获取的会话。
119+
- `false`:会话不会自动加载,节省内存。调用 `ChatManager#getAllConversationsBySort``ChatManager#getAllConversations` 时,若内存中没有任何缓存的会话,获取到的会话数为 0,SDK 不会将数据库中的会话加载到内存。而且,这种情况下,调用 `ChatManager#getUnreadMessageCount` 方法获取到的未读消息数也为 0。这种情况下,若需要通过这三个 API 获取所有会话及未读数,需要先调用 `ChatManager#loadAllConversations` 或者 `ChatManager#asyncFilterConversationsFromDB` 方法将数据库中的会话加载到内存。
120120

121121
:::tip
122122
若使用自动加载会话功能,需将 SDK 升级至 4.6.0。
@@ -127,33 +127,33 @@ SDK 初始化时,你可以设置 `EMOptions#setAutoLoadAllConversations` 方
127127
你可以调用 `cleanConversationsMemoryCache` 方法,清除本地内存中的所有会话,从而释放内存。
128128

129129
```java
130-
EMClient.getInstance().chatManager().cleanConversationsMemoryCache();
130+
ChatClient.getInstance().chatManager().cleanConversationsMemoryCache();
131131
```
132132

133133
### 降低会话占用内存的实例
134134

135135
对于用户存在很多会话的场景,若在运行过程中降低会话对内存的占用,可采取以下步骤:
136136

137-
1. 关闭自动加载会话开关:SDK 初始化时,将 `EMOptions#setAutoLoadAllConversations` 设置为 `false`
137+
1. 关闭自动加载会话开关:SDK 初始化时,将 `ChatOptions#setAutoLoadAllConversations` 设置为 `false`
138138
2. 获取会话前清空内存中的会话:调用 `asyncFilterConversationsFromDB` 获取过滤的会话时,将 `cleanConversationsCache` 参数传 `true`
139139
3. 监控到内存较高时(开发者自己实现)释放内存: 调用 `cleanConversationsMemoryCache` 方法清空内存中的会话,释放内存。
140140

141141
```java
142142
//step 1:SDK 初始化时,关闭自动加载会话开关。
143-
EMOptions options = initChatOptions(context);
143+
ChatOptions options = initChatOptions(context);
144144
options.setAutoLoadAllConversations(false);
145-
EMClient.getInstance().init(mContext, options);
145+
ChatClient.getInstance().init(mContext, options);
146146

147147
//step 2:需要使用会话时,使用 asyncFilterConversationsFromDB 过滤后获取到会话,cleanConversationsCache 参数传 true。
148-
EMClient.getInstance().chatManager().asyncFilterConversationsFromDB(new EMCustomConversationFilter() {
148+
ChatClient.getInstance().chatManager().asyncFilterConversationsFromDB(new CustomConversationFilter() {
149149
@Override
150-
public boolean filter(EMConversation emConversation) {
150+
public boolean filter(Conversation emConversation) {
151151
//在这里可以根据会话 emConversation 的属性决定返回 true/false 来过滤会话。
152152
return true;
153153
}
154-
},true, new EMValueCallBack<List<EMConversation>>() {
154+
},true, new ValueCallBack<List<Conversation>>() {
155155
@Override
156-
public void onSuccess(List<EMConversation> filterConversations) {
156+
public void onSuccess(List<Conversation> filterConversations) {
157157
//filterConversations 为最终过滤后的会话结果。
158158
}
159159

@@ -163,6 +163,6 @@ EMClient.getInstance().chatManager().asyncFilterConversationsFromDB(new EMCustom
163163
}
164164
});
165165
//step 3:当监控到内存较高时(该逻辑开发者自己去实现),调用以下方法释放内存。
166-
EMClient.getInstance().chatManager().cleanConversationsMemoryCache();
166+
ChatClient.getInstance().chatManager().cleanConversationsMemoryCache();
167167

168168
```

0 commit comments

Comments
 (0)