hyphenate_SDK3.0  3.8.5
hyphenatejavaIMSDK
| Public 成员函数 | 静态 Public 成员函数 | 所有成员列表
com.hyphenate.chat.EMConversation类 参考

继承自 com.hyphenate.chat.EMBase< T > .

enum  EMConversationType
 
enum  EMSearchDirection
 
class  MessageCache
 

Public 成员函数

String conversationId ()
 
EMConversationType getType ()
 
int getUnreadMsgCount ()
 
void markAllMessagesAsRead ()
 
int getAllMsgCount ()
 
List< EMMessageloadMoreMsgFromDB (String startMsgId, int pageSize)
 
List< EMMessageloadMoreMsgFromDB (String startMsgId, int pageSize, EMSearchDirection direction)
 
List< EMMessagesearchMsgFromDB (long timeStamp, int maxCount, EMSearchDirection direction)
 
List< EMMessagesearchMsgFromDB (EMMessage.Type type, long timeStamp, int maxCount, String from, EMSearchDirection direction)
 
List< EMMessagesearchMsgFromDB (String keywords, long timeStamp, int maxCount, String from, EMSearchDirection direction)
 
List< EMMessagesearchMsgFromDB (long startTimeStamp, long endTimeStamp, int maxCount)
 
List< EMMessagesearchCustomMsgFromDB (String keywords, long timeStamp, int maxCount, String from, EMSearchDirection direction)
 
EMMessage getMessage (String messageId, boolean markAsRead)
 
List< EMMessageloadMessages (List< String > msgIds)
 
void markMessageAsRead (String messageId)
 
List< EMMessagegetAllMessages ()
 
void removeMessage (String messageId)
 
EMMessage getLastMessage ()
 
EMMessage getLatestMessageFromOthers ()
 
void clear ()
 
void clearAllMessages ()
 
void setExtField (String ext)
 
String getExtField ()
 
boolean isGroup ()
 
boolean insertMessage (EMMessage msg)
 
boolean appendMessage (EMMessage msg)
 
boolean updateMessage (EMMessage msg)
 
String getMessageAttachmentPath ()
 

静态 Public 成员函数

static EMConversationType msgType2ConversationType (String id, EMMessage.ChatType type)
 

详细描述

会话类,表示和一个用户/群组/聊天室的对话,包含发送和接收的消息 例如,从会话中获取未读消息数:

    // conversationId可以为聊天的另一方id,群组id或者聊天室id
    EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId);
    int unread = conversation.getUnreadMsgCount();
版本
3.0

成员函数说明

boolean com.hyphenate.chat.EMConversation.appendMessage ( EMMessage  msg)

插入一条消息到会话尾部 消息的conversationId应该和会话的conversationId一致,消息会被插入DB,并且更新会话的latestMessage等属性

参数
msg消息实例
void com.hyphenate.chat.EMConversation.clear ( )

清除对话中的所有消息 只清除内存的,不清除db的消息 在退出会话的时候清除内存缓存,减小内存消耗

void com.hyphenate.chat.EMConversation.clearAllMessages ( )

删除会话中所有消息,同时清除内存和数据库中的消息

String com.hyphenate.chat.EMConversation.conversationId ( )

会话ID 对于单聊类型,会话ID同时也是对方用户的名称 对于群聊类型,会话ID同时也是对方群组的ID,并不同于群组的名称 对于聊天室类型,会话ID同时也是聊天室的ID,并不同于聊天室的名称 对于HelpDesk类型,会话ID与单聊类型相同,是对方用户的名称

返回
会话ID
List<EMMessage> com.hyphenate.chat.EMConversation.getAllMessages ( )

获取此conversation当前内存所有的message 如果内存中为空,再从db中加载最近的一条消息

返回
消息列表
int com.hyphenate.chat.EMConversation.getAllMsgCount ( )

获取本地存储中会话的全部消息数目

返回
会话的全部消息数量
String com.hyphenate.chat.EMConversation.getExtField ( )

获取会话扩展字段 该字段只保存在本地,不进行网络同步

返回
会话对应扩展字段的内容
EMMessage com.hyphenate.chat.EMConversation.getLastMessage ( )

获取消息队列中的最后一条消息 此操作不会改变未读消息计数 优先从缓存中获取,如果缓存中没有,则从数据库中加载最近的一条消息

返回
消息
EMMessage com.hyphenate.chat.EMConversation.getLatestMessageFromOthers ( )

获取会话接收到的最后一条消息

返回
消息
EMMessage com.hyphenate.chat.EMConversation.getMessage ( String  messageId,
boolean  markAsRead 
)

根据messageId获取指定的消息 优先从内存中加载,如果内存中没有则从数据库中加载,并将其插入到内存中

参数
messageId消息id
markAsRead是否获取消息的同时标记消息为已读,如果标记为已读,则会发送已读标记到服务器
返回
获取到的消息实例
String com.hyphenate.chat.EMConversation.getMessageAttachmentPath ( )

返回会话对应的附件存储路径 该方法适用于清理该会话磁盘存储,不确保该路径一定存在,请在删除对应路径前加以判断,并加上异常保护

返回
附件存储路径
EMConversationType com.hyphenate.chat.EMConversation.getType ( )

获取会话类型

返回
会话类型
int com.hyphenate.chat.EMConversation.getUnreadMsgCount ( )

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

返回
未读的消息数量
boolean com.hyphenate.chat.EMConversation.insertMessage ( EMMessage  msg)

插入一条消息到本地数据库 消息的conversationId应该和会话的conversationId一致,消息会被插入DB,并且更新会话的latestMessage等属性

参数
msg消息实例
boolean com.hyphenate.chat.EMConversation.isGroup ( )

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

返回
群组和聊天室类型都会返回true, 其他类型返回false
List<EMMessage> com.hyphenate.chat.EMConversation.loadMessages ( List< String >  msgIds)

加载一组消息 如果缓存不存在会去DB查询并加载

参数
msgIds一组消息ID
返回
返回一组消息,如果找不到返回null
List<EMMessage> com.hyphenate.chat.EMConversation.loadMoreMsgFromDB ( String  startMsgId,
int  pageSize 
)

从数据库中加载更多消息 根据传入的参数从db加载startMsgId之前(存储顺序)指定数量的消息, 加载到的messages会加入到当前会话的缓存中,通过getAllMessages()将会返回所有加载的消息

参数
startMsgId加载这个id之前的message,如果传入""或者null,将从最近的消息开始加载
pageSize加载多少条
返回
消息列表
List<EMMessage> com.hyphenate.chat.EMConversation.loadMoreMsgFromDB ( String  startMsgId,
int  pageSize,
EMSearchDirection  direction 
)

根据传入的参数从db加载startMsgId之前(存储顺序)指定数量的message, 加载到的messages会加入到当前conversation的messages里

参数
startMsgId加载这个id之前的message
pageSize加载多少条
direction消息加载的方向
返回
消息列表
void com.hyphenate.chat.EMConversation.markAllMessagesAsRead ( )

将所有未读消息设置为已读

void com.hyphenate.chat.EMConversation.markMessageAsRead ( String  messageId)

设置指定的消息为已读 将消息置为已读,也可用EMMessage#setUnread(boolean)

参数
messageId消息ID
static EMConversationType com.hyphenate.chat.EMConversation.msgType2ConversationType ( String  id,
EMMessage.ChatType  type 
)
static

从消息类型到会话类型的转化

参数
id消息Id,用来区分客服和单聊,对于其他类型,这个参数没有影响
type消息类型
返回
会话类型
void com.hyphenate.chat.EMConversation.removeMessage ( String  messageId)

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

参数
messageId待删除消息的ID
List<EMMessage> com.hyphenate.chat.EMConversation.searchCustomMsgFromDB ( String  keywords,
long  timeStamp,
int  maxCount,
String  from,
EMSearchDirection  direction 
)

根据传入的参数从本地存储中搜索自定义消息中指定数量的消息 注意:当maxCount非常大时,需要考虑内存消耗

参数
keywords搜索消息中的关键词
timeStamp搜索消息的时间点
maxCount搜索结果的最大条数
from搜索来自某人的消息,也可用于搜索群组里的消息
返回
消息列表
List<EMMessage> com.hyphenate.chat.EMConversation.searchMsgFromDB ( long  timeStamp,
int  maxCount,
EMSearchDirection  direction 
)

根据传入的参数从本地存储中搜索指定数量的消息 注意:当maxCount非常大时,需要考虑内存消耗

参数
timeStamp搜索消息的时间点
maxCount搜索结果的最大条数
返回
消息列表
List<EMMessage> com.hyphenate.chat.EMConversation.searchMsgFromDB ( EMMessage.Type  type,
long  timeStamp,
int  maxCount,
String  from,
EMSearchDirection  direction 
)

根据传入的参数从本地存储中搜索指定数量的消息 注意:当maxCount非常大时,需要考虑内存消耗

参数
type消息类型,文本、图片、语音等等
timeStamp搜索消息的时间点
maxCount搜索结果的最大条数
from搜索来自某人的消息,也可用于搜索群组里的消息
返回
消息列表
List<EMMessage> com.hyphenate.chat.EMConversation.searchMsgFromDB ( String  keywords,
long  timeStamp,
int  maxCount,
String  from,
EMSearchDirection  direction 
)

根据传入的参数从本地存储中搜索指定数量的消息 注意:当maxCount非常大时,需要考虑内存消耗

参数
keywords搜索消息中的关键词
timeStamp搜索消息的时间点
maxCount搜索结果的最大条数
from搜索来自某人的消息,也可用于搜索群组里的消息
返回
消息列表
List<EMMessage> com.hyphenate.chat.EMConversation.searchMsgFromDB ( long  startTimeStamp,
long  endTimeStamp,
int  maxCount 
)

根据传入的参数从本地存储中搜索指定数量的消息 注意:当maxCount非常大时,需要考虑内存消耗

参数
startTimeStamp搜索的起始时间
endTimeStamp搜索的结束时间
maxCount搜索结果的最大条数
返回
消息列表
void com.hyphenate.chat.EMConversation.setExtField ( String  ext)

设置会话扩展字段 该字段只保存在本地,不进行网络同步

参数
ext会话对应扩展字段的内容
boolean com.hyphenate.chat.EMConversation.updateMessage ( EMMessage  msg)

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

参数
msg要更新的消息

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