继承自 io.agora.chat.EMBase< T > .
|
String | conversationId () |
|
ConversationType | getType () |
|
int | getUnreadMsgCount () |
|
void | markAllMessagesAsRead () |
|
int | getAllMsgCount () |
|
boolean | isChatThread () |
|
List< ChatMessage > | loadMoreMsgFromDB (String startMsgId, int pageSize) |
|
List< ChatMessage > | loadMoreMsgFromDB (String startMsgId, int pageSize, SearchDirection direction) |
|
List< ChatMessage > | searchMsgFromDB (long timeStamp, int maxCount, SearchDirection direction) |
|
List< ChatMessage > | searchMsgFromDB (ChatMessage.Type type, long timeStamp, int maxCount, String from, SearchDirection direction) |
|
List< ChatMessage > | searchMsgFromDB (String keywords, long timeStamp, int maxCount, String from, SearchDirection direction) |
|
List< ChatMessage > | searchMsgFromDB (long startTimeStamp, long endTimeStamp, int maxCount) |
|
List< ChatMessage > | searchCustomMsgFromDB (String keywords, long timeStamp, int maxCount, String from, SearchDirection direction) |
|
ChatMessage | getMessage (String messageId, boolean markAsRead) |
|
List< ChatMessage > | loadMessages (List< String > msgIds) |
|
void | markMessageAsRead (String messageId) |
|
List< ChatMessage > | getAllMessages () |
|
void | removeMessage (String messageId) |
|
ChatMessage | getLastMessage () |
|
ChatMessage | getLatestMessageFromOthers () |
|
void | clear () |
|
void | clearAllMessages () |
|
void | setExtField (String ext) |
|
String | getExtField () |
|
boolean | isGroup () |
|
boolean | insertMessage (ChatMessage msg) |
|
boolean | appendMessage (ChatMessage msg) |
|
boolean | updateMessage (ChatMessage msg) |
|
String | getMessageAttachmentPath () |
|
会话类,表示和一个用户/群组/聊天室的对话,包含发送和接收的消息。
例如,从会话中获取未读消息数:
Conversation conversation = ChatClient.getInstance().chatManager().getConversation(
conversationId);
int unread = conversation.getUnreadMsgCount();
String conversationId()
Definition: Conversation.java:162
- 版本
- 3.0
◆ appendMessage()
boolean io.agora.chat.Conversation.appendMessage |
( |
ChatMessage |
msg | ) |
|
插入一条消息到会话尾部。
消息的 conversationId 应该和会话的 conversationId 一致,消息会被插入 SDK 本地数据库,并且更新会话的 latestMessage 等属性。
- 参数
-
◆ clear()
void io.agora.chat.Conversation.clear |
( |
| ) |
|
清除对话中的所有消息。
只清除内存的,不清除本地数据库的消息。 在退出会话的时候清除内存缓存,减小内存消耗。
◆ clearAllMessages()
void io.agora.chat.Conversation.clearAllMessages |
( |
| ) |
|
删除会话中所有消息,同时清除内存和数据库中的消息。
◆ conversationId()
String io.agora.chat.Conversation.conversationId |
( |
| ) |
|
会话 ID。 对于单聊类型,会话 ID 同时也是对方用户的名称。 对于群聊类型,会话 ID 同时也是对方群组的 ID,并不同于群组的名称。 对于聊天室类型,会话 ID 同时也是聊天室的 ID,并不同于聊天室的名称。 对于 HelpDesk 类型,会话 ID 与单聊类型相同,是对方用户的名称。
- 返回
- 会话 ID。
◆ getAllMessages()
List< ChatMessage > io.agora.chat.Conversation.getAllMessages |
( |
| ) |
|
获取此 conversation 当前内存所有的 message。 如果内存中为空,再从本地数据库中加载最近的一条消息。
- 返回
- 消息列表。
◆ getAllMsgCount()
int io.agora.chat.Conversation.getAllMsgCount |
( |
| ) |
|
获取 SDK 本地数据库中会话的全部消息数目。
- 返回
- 会话的全部消息数量。
◆ getExtField()
String io.agora.chat.Conversation.getExtField |
( |
| ) |
|
获取会话扩展字段。
该字段只保存在本地,不进行网络同步。
注意:Thread 会话下不会保存扩展字段。
- 返回
- 会话对应扩展字段的内容。
◆ getLastMessage()
ChatMessage io.agora.chat.Conversation.getLastMessage |
( |
| ) |
|
获取消息队列中的最后一条消息。 此操作不会改变未读消息计数。 优先从缓存中获取,如果缓存中没有,则从数据库中加载最近的一条消息。
- 返回
- 消息。
◆ getLatestMessageFromOthers()
ChatMessage io.agora.chat.Conversation.getLatestMessageFromOthers |
( |
| ) |
|
◆ getMessage()
ChatMessage io.agora.chat.Conversation.getMessage |
( |
String |
messageId, |
|
|
boolean |
markAsRead |
|
) |
| |
根据 messageId 获取已读的消息。 优先从内存中加载,如果内存中没有则从数据库中加载,并将其插入到内存中。
- 参数
-
messageId | 消息 ID。 |
markAsRead | 是否获取消息的同时标记消息为已读,如果标记为已读,则会发送已读标记到服务器。 |
- 返回
- 获取到的消息实例。
◆ getMessageAttachmentPath()
String io.agora.chat.Conversation.getMessageAttachmentPath |
( |
| ) |
|
返回会话对应的附件在 sdcard 中的存储路径。
该方法适用于清理该会话磁盘存储,不确保该路径一定存在,请在删除对应路径前加以判断,并加上异常保护。
- 返回
- Sdcard 中的附件存储路径。
◆ getType()
◆ getUnreadMsgCount()
int io.agora.chat.Conversation.getUnreadMsgCount |
( |
| ) |
|
获取此对话中未读的消息数量。
- 返回
- 未读的消息数量。
◆ insertMessage()
boolean io.agora.chat.Conversation.insertMessage |
( |
ChatMessage |
msg | ) |
|
插入一条消息在 SDK 本地数据库,消息的 conversation ID 应该和会话的 conversation ID 一致,消息会根据消息里的时间戳被插入 SDK 本地数据库,并且更新会话的 latestMessage 等属性。
- 参数
-
◆ isChatThread()
boolean io.agora.chat.Conversation.isChatThread |
( |
| ) |
|
◆ isGroup()
boolean io.agora.chat.Conversation.isGroup |
( |
| ) |
|
获取是否是群组或者聊天室会话。
- 返回
- 群组和聊天室类型都会返回
true
,其他类型返回 false
。
◆ loadMessages()
List< ChatMessage > io.agora.chat.Conversation.loadMessages |
( |
List< String > |
msgIds | ) |
|
加载一组消息。 如果缓存不存在会去本地数据库查询并加载。
- 参数
-
- 返回
- 返回一组消息,如果找不到返回 null。
◆ loadMoreMsgFromDB() [1/2]
List< ChatMessage > io.agora.chat.Conversation.loadMoreMsgFromDB |
( |
String |
startMsgId, |
|
|
int |
pageSize |
|
) |
| |
从 SDK 本地数据库中加载更多消息。 根据传入的参数从本地数据库加载 startMsgId 之前(存储顺序)指定数量的消息, 加载到的 messages 会加入到当前会话的缓存中,通过 getAllMessages() 将会返回所有加载的消息。
- 参数
-
startMsgId | 加载这个 ID 之前的 message,如果传入""或者 null,将从最近的消息开始加载。 |
pageSize | 一页加载的条数。 |
- 返回
- 消息列表。
◆ loadMoreMsgFromDB() [2/2]
根据传入的参数从 SDK 本地数据库加载 startMsgId 之前或之后(存储顺序)指定数量的 message, 加载到的 messages 会加入到当前 conversation 的 messages 里。
- 参数
-
startMsgId | 加载这个 ID 之前的 message,即作为起始点的 message。 |
pageSize | 每页加载多少条。 |
direction | 消息加载的方向。 |
- 返回
- 消息列表。
◆ markAllMessagesAsRead()
void io.agora.chat.Conversation.markAllMessagesAsRead |
( |
| ) |
|
◆ markMessageAsRead()
void io.agora.chat.Conversation.markMessageAsRead |
( |
String |
messageId | ) |
|
◆ msgType2ConversationType()
static ConversationType io.agora.chat.Conversation.msgType2ConversationType |
( |
String |
id, |
|
|
ChatMessage.ChatType |
type |
|
) |
| |
|
static |
从消息类型到会话类型的转化。
- 参数
-
id | 消息 ID,用来区分客服和单聊,对于其他类型,这个参数没有影响。 |
type | 消息类型。 |
- 返回
- 会话类型。
◆ removeMessage()
void io.agora.chat.Conversation.removeMessage |
( |
String |
messageId | ) |
|
删除一条指定的消息。 注:只会对本地数据进行操作。
- 参数
-
◆ searchCustomMsgFromDB()
List< ChatMessage > io.agora.chat.Conversation.searchCustomMsgFromDB |
( |
String |
keywords, |
|
|
long |
timeStamp, |
|
|
int |
maxCount, |
|
|
String |
from, |
|
|
SearchDirection |
direction |
|
) |
| |
根据搜索消息中的关键词、搜索消息的时间点、搜索结果的最大条数、搜索来源和搜索方向从 SDK 本地数据库中搜索自定义消息中指定数量的消息。
注意:当 maxCount 非常大时,需要考虑内存消耗。
- 参数
-
keywords | 搜索消息中的关键词。 |
timeStamp | 搜索消息的时间点。 |
maxCount | 搜索结果的最大条数。 |
from | 搜索来自某人的消息,也可用于搜索群组里的消息。 |
direction | 消息加载的方向。 |
- 返回
- 消息列表。
◆ searchMsgFromDB() [1/4]
List< ChatMessage > io.agora.chat.Conversation.searchMsgFromDB |
( |
ChatMessage.Type |
type, |
|
|
long |
timeStamp, |
|
|
int |
maxCount, |
|
|
String |
from, |
|
|
SearchDirection |
direction |
|
) |
| |
根据消息类型、搜索消息的时间点、搜索结果的最大条数、搜索来源和搜索方向从 SDK 本地数据库中搜索指定数量的消息。
注意:当 maxCount 非常大时,需要考虑内存消耗。
- 参数
-
type | 消息类型,文本、图片、语音等等。 |
timeStamp | 搜索消息的时间点。 |
maxCount | 搜索结果的最大条数。 |
from | 搜索来自某人的消息,也可用于搜索群组里的消息。 |
direction | 消息加载的方向。 |
- 返回
- 消息列表。
◆ searchMsgFromDB() [2/4]
List< ChatMessage > io.agora.chat.Conversation.searchMsgFromDB |
( |
long |
startTimeStamp, |
|
|
long |
endTimeStamp, |
|
|
int |
maxCount |
|
) |
| |
从 SDK 本地数据库中搜索指定时间段内指定数量的消息。 注意:当 maxCount 非常大时,需要考虑内存消耗。
- 参数
-
startTimeStamp | 搜索的起始时间。 |
endTimeStamp | 搜索的结束时间。 |
maxCount | 搜索结果的最大条数。 |
- 返回
- 消息列表。
◆ searchMsgFromDB() [3/4]
根据搜索消息时间点、一次搜索结果的最大条数和搜索方向从 SDK 本地数据库中搜索指定数量的消息。
注意:当 maxCount 非常大时,需要考虑内存消耗。
- 参数
-
timeStamp | 搜索消息的时间点。 |
maxCount | 一次搜索结果的最大条数。 |
direction | 消息加载的方向。 |
- 返回
- 消息列表。
◆ searchMsgFromDB() [4/4]
List< ChatMessage > io.agora.chat.Conversation.searchMsgFromDB |
( |
String |
keywords, |
|
|
long |
timeStamp, |
|
|
int |
maxCount, |
|
|
String |
from, |
|
|
SearchDirection |
direction |
|
) |
| |
根据消息中的关键词、搜索消息的时间点、搜索结果的最大条数、搜索来源和搜索方向从 SDK 本地数据库中搜索指定数量的消息。 注意:当 maxCount 非常大时,需要考虑内存消耗。
- 参数
-
keywords | 搜索消息中的关键词。 |
timeStamp | 搜索消息的时间点。 |
maxCount | 搜索结果的最大条数。 |
from | 搜索来自某人的消息,也可用于搜索群组里的消息。 |
direction | 消息加载的方向。 |
- 返回
- 消息列表。
◆ setExtField()
void io.agora.chat.Conversation.setExtField |
( |
String |
ext | ) |
|
设置会话扩展字段。 该字段只保存在本地,不进行网络同步。 注意:Thread 会话下不会保存扩展字段。
- 参数
-
◆ updateMessage()
boolean io.agora.chat.Conversation.updateMessage |
( |
ChatMessage |
msg | ) |
|
更新 SDK 本地数据库的消息。 不能更新消息 ID,消息更新后,会话的 latestMessage 等属性进行相应更新。
- 参数
-
该类的文档由以下文件生成:
- hyphenatechatsdk/src/io/agora/chat/Conversation.java