agora_chat_SDK 1.0.6
agora java chat SDK
| Public 成员函数 | 静态 Public 成员函数 | 所有成员列表
io.agora.chat.Conversation类 参考

继承自 io.agora.chat.EMBase< T > .

enum  ConversationType
 
class  MessageCache
 
enum  SearchDirection
 

Public 成员函数

String conversationId ()
 
ConversationType getType ()
 
int getUnreadMsgCount ()
 
void markAllMessagesAsRead ()
 
int getAllMsgCount ()
 
boolean isChatThread ()
 
List< ChatMessageloadMoreMsgFromDB (String startMsgId, int pageSize)
 
List< ChatMessageloadMoreMsgFromDB (String startMsgId, int pageSize, SearchDirection direction)
 
List< ChatMessagesearchMsgFromDB (long timeStamp, int maxCount, SearchDirection direction)
 
List< ChatMessagesearchMsgFromDB (ChatMessage.Type type, long timeStamp, int maxCount, String from, SearchDirection direction)
 
List< ChatMessagesearchMsgFromDB (String keywords, long timeStamp, int maxCount, String from, SearchDirection direction)
 
List< ChatMessagesearchMsgFromDB (long startTimeStamp, long endTimeStamp, int maxCount)
 
List< ChatMessagesearchCustomMsgFromDB (String keywords, long timeStamp, int maxCount, String from, SearchDirection direction)
 
ChatMessage getMessage (String messageId, boolean markAsRead)
 
List< ChatMessageloadMessages (List< String > msgIds)
 
void markMessageAsRead (String messageId)
 
List< ChatMessagegetAllMessages ()
 
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 ()
 

静态 Public 成员函数

static ConversationType msgType2ConversationType (String id, ChatMessage.ChatType type)
 

详细描述

会话类,表示和一个用户/群组/聊天室的对话,包含发送和接收的消息。

例如,从会话中获取未读消息数:

// conversationId 可以为聊天的另一方 ID,群组 ID 或者聊天室 ID。
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 等属性。

参数
msg消息实例。

◆ 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()

ConversationType io.agora.chat.Conversation.getType ( )

获取会话类型。

返回
会话类型。

◆ getUnreadMsgCount()

int io.agora.chat.Conversation.getUnreadMsgCount ( )

获取此对话中未读的消息数量。

返回
未读的消息数量。

◆ insertMessage()

boolean io.agora.chat.Conversation.insertMessage ( ChatMessage  msg)

插入一条消息在 SDK 本地数据库,消息的 conversation ID 应该和会话的 conversation ID 一致,消息会根据消息里的时间戳被插入 SDK 本地数据库,并且更新会话的 latestMessage 等属性。

参数
msg消息实例。

◆ isChatThread()

boolean io.agora.chat.Conversation.isChatThread ( )

判断当前会话是否是 Thread 会话

返回

◆ isGroup()

boolean io.agora.chat.Conversation.isGroup ( )

获取是否是群组或者聊天室会话。

返回
群组和聊天室类型都会返回 true,其他类型返回 false

◆ loadMessages()

List< ChatMessage > io.agora.chat.Conversation.loadMessages ( List< String >  msgIds)

加载一组消息。 如果缓存不存在会去本地数据库查询并加载。

参数
msgIds一组消息 ID。
返回
返回一组消息,如果找不到返回 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]

List< ChatMessage > io.agora.chat.Conversation.loadMoreMsgFromDB ( String  startMsgId,
int  pageSize,
SearchDirection  direction 
)

根据传入的参数从 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)

设置指定的消息为已读。

将消息置为已读,也可用 ChatMessage#setUnread(boolean)

参数
messageId消息 ID。

◆ 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)

删除一条指定的消息。 注:只会对本地数据进行操作。

参数
messageId待删除消息的 ID。

◆ 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]

List< ChatMessage > io.agora.chat.Conversation.searchMsgFromDB ( long  timeStamp,
int  maxCount,
SearchDirection  direction 
)

根据搜索消息时间点、一次搜索结果的最大条数和搜索方向从 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 会话下不会保存扩展字段。

参数
ext会话对应扩展字段的内容。

◆ updateMessage()

boolean io.agora.chat.Conversation.updateMessage ( ChatMessage  msg)

更新 SDK 本地数据库的消息。 不能更新消息 ID,消息更新后,会话的 latestMessage 等属性进行相应更新。

参数
msg要更新的消息。

该类的文档由以下文件生成: