hyphenate_SDK4.0 4.2.3-lite
hyphenate java IM SDK
Public 成员函数 | Protected 成员函数 | 所有成员列表
com.hyphenate.chat.EMChatManager类 参考

Public 成员函数

void sendMessage (final EMMessage msg)
 
void ackConversationRead (String conversationId) throws HyphenateException
 
void ackMessageRead (String to, String messageId) throws HyphenateException
 
void recallMessage (EMMessage message) throws HyphenateException
 
void asyncRecallMessage (final EMMessage message, final EMCallBack callback)
 
EMMessage getMessage (String messageId)
 
EMConversation getConversation (String id)
 
EMConversation getConversation (String id, EMConversationType type)
 
EMConversation getConversation (String username, EMConversationType type, boolean createIfNotExists)
 
EMConversation getConversation (String username, EMConversationType type, boolean createIfNotExists, boolean isChatThread)
 
int getUnreadMessageCount ()
 
void saveMessage (EMMessage message)
 
void downloadAttachment (final EMMessage msg)
 
void downloadThumbnail (final EMMessage msg)
 
List< EMConversationgetConversationsByType (EMConversationType type)
 
Map< String, EMConversationgetAllConversations ()
 
void asyncFetchPinnedConversationsFromServer (final int limit, final String cursor, final EMValueCallBack< EMCursorResult< EMConversation > > callback)
 
void asyncFetchConversationsFromServer (final int limit, final String cursor, final EMValueCallBack< EMCursorResult< EMConversation > > callback)
 
void asyncPinConversation (final String conversationId, boolean isPinned, final EMCallBack callback)
 
boolean deleteConversation (String username, boolean deleteMessages)
 
void deleteConversationFromServer (String username, EMConversationType type, boolean isDeleteServerMessages, EMCallBack deleteCallBack)
 
void addMessageListener (EMMessageListener listener)
 
void removeMessageListener (EMMessageListener listener)
 
void addConversationListener (EMConversationListener listener)
 
void removeConversationListener (EMConversationListener listener)
 
void setVoiceMessageListened (EMMessage message)
 
void asyncFetchHistoryMessages (String conversationId, EMConversationType type, int pageSize, String cursor, EMFetchMessageOption option, final EMValueCallBack< EMCursorResult< EMMessage > > callBack)
 

Protected 成员函数

void removeMessagesFromServer (String conversationId, EMConversationType type, long beforeTimeStamp, EMCallBack callBack)
 

详细描述

聊天管理类,该类负责管理会话(加载,删除等)、发送消息、下载消息附件等。

发送文文本消息示例如下:

EMMessage message = EMMessage.createTxtSendMessage(content, toChatUsername);
EMClient.getInstance().chatManager().sendMessage(message);

成员函数说明

◆ ackConversationRead()

void com.hyphenate.chat.EMChatManager.ackConversationRead ( String  conversationId) throws HyphenateException

发送会话的已读回执,该方法只针对单聊会话。

该方法会通知服务器将此会话未读数设置为 0,消息发送方将会收到 EMConversationListener#onConversationRead(String, String) 回调。 在多端多设备登录下,接收方的其他设备也会收到该回调。

参数
conversationId会话 ID。
异常
HyphenateException可能抛出以下异常:EMError#USER_NOT_LOGINEMError#SERVER_NOT_REACHABLEEMError#MESSAGE_INVALID 等,详见 EMError

◆ ackMessageRead()

void com.hyphenate.chat.EMChatManager.ackMessageRead ( String  to,
String  messageId 
) throws HyphenateException

发送消息的已读回执。

该方法仅适用于单聊会话,仅在 EMOptions#setRequireAck(boolean)true 时生效。

推荐进入聊天页面的时调用 ackConversationRead(String) ,其他情况下调用该方法以减少调用频率。

参数
to接收方的用户 ID。
messageId消息的 ID。
异常
HyphenateException如果有异常会在这里抛出,包含错误码和错误描述,详见 EMError

◆ addConversationListener()

void com.hyphenate.chat.EMChatManager.addConversationListener ( EMConversationListener  listener)

注册会话监听器。

会话监听器可监听会话变化及会话已读回执。

在不需要会话监听器时,可调用 removeConversationListener(EMConversationListener) 方法移除。

参数
listener要添加的会话监听,详见 EMConversationListener

◆ addMessageListener()

void com.hyphenate.chat.EMChatManager.addMessageListener ( EMMessageListener  listener)

注册消息监听器。

接收到新消息等回调可以通过设置此方法进行监听。

在不需要消息监听器时,可调用 removeMessageListener(EMMessageListener) 方法将其移除。

参数
listener要注册的消息监听,详见 EMMessageListener

◆ asyncFetchConversationsFromServer()

void com.hyphenate.chat.EMChatManager.asyncFetchConversationsFromServer ( final int  limit,
final String  cursor,
final EMValueCallBack< EMCursorResult< EMConversation > >  callback 
)

分页从服务器获取获取会话列表。

SDK 按照会话活跃时间(会话的最后一条消息的时间戳)倒序返回会话列表。

若会话中没有消息,则 SDK 按照会话创建时间的倒序返回会话列表。

参数
limit每页期望返回的会话数量。取值范围为 [1,50]。
cursor开始获取数据的游标位置。若获取数据时传 null 或者空字符串(""),SDK 从最新活跃的会话开始获取。
callback分页获取结果 EMCursorResult,包含用于下次获取数据的 cursor 以及会话列表。 如果是最后一页,cursor 返回结果为空字符串。

◆ asyncFetchHistoryMessages()

void com.hyphenate.chat.EMChatManager.asyncFetchHistoryMessages ( String  conversationId,
EMConversationType  type,
int  pageSize,
String  cursor,
EMFetchMessageOption  option,
final EMValueCallBack< EMCursorResult< EMMessage > >  callBack 
)

/**

根据消息拉取参数配置类(EMFetchMessageOption)从服务器分页获取指定会话的历史消息。

异步方法。

参数
conversationId会话 ID。
  • 单聊:对端用户的用户 ID;
  • 群聊:群组 ID。
type会话类型, 详见 EMConversationType
pageSize每页期望获取的消息条数。取值范围为 [1,50]。
cursor查询的起始游标位置。
option查询历史消息的参数配置类,详见 EMFetchMessageOption
返回
查询到的消息列表和下次查询的 cursor。
参数
callBack结果回调:

◆ asyncFetchPinnedConversationsFromServer()

void com.hyphenate.chat.EMChatManager.asyncFetchPinnedConversationsFromServer ( final int  limit,
final String  cursor,
final EMValueCallBack< EMCursorResult< EMConversation > >  callback 
)

分页从服务器获取置顶会话。

SDK 按照会话置顶时间倒序返回。

参数
limit每页返回的会话数。取值范围为 [1,50]。
cursor开始获取数据的游标位置。若获取数据时传 null 或者空字符串(""),SDK 从最新置顶的会话开始查询。
callback分页获取结果 EMCursorResult,包含用于下次获取数据的 cursor 以及置顶的会话列表。 如果是最后一页,cursor 返回结果为空字符串。

◆ asyncPinConversation()

void com.hyphenate.chat.EMChatManager.asyncPinConversation ( final String  conversationId,
boolean  isPinned,
final EMCallBack  callback 
)

设置是否置顶会话。

参数
conversationId会话 ID。
isPinned是否置顶会话:
  • true:置顶;
  • false: 取消置顶。
    参数
    callback设置会话置顶状态的结果回调。

◆ asyncRecallMessage()

void com.hyphenate.chat.EMChatManager.asyncRecallMessage ( final EMMessage  message,
final EMCallBack  callback 
)

撤回发送成功的消息。

异步方法。

参数
message消息对象。
callbackEMCallBack 类的对象,详见 EMCallBack

◆ deleteConversation()

boolean com.hyphenate.chat.EMChatManager.deleteConversation ( String  username,
boolean  deleteMessages 
)

删除指定会话及其本地历史消息。

参数
username会话 ID。
deleteMessages删除会话时是否同时删除本地的历史消息。
  • true:删除;
  • false:不删除。
返回
会话是否删除成功。
  • true:是;
  • false: 否。

◆ deleteConversationFromServer()

void com.hyphenate.chat.EMChatManager.deleteConversationFromServer ( String  username,
EMConversationType  type,
boolean  isDeleteServerMessages,
EMCallBack  deleteCallBack 
)

删除服务端的指定会话及其历史消息。

异步方法。

参数
username会话 ID。
type会话类型,详见 EMConversationType
isDeleteServerMessages删除会话时是否同时删除历史消息。
  • true:是;
  • false: 否。
deleteCallBack删除服务端会话及其历史消息成功与否的回调。
  • true:删除成功;
  • false:删除失败。

◆ downloadAttachment()

void com.hyphenate.chat.EMChatManager.downloadAttachment ( final EMMessage  msg)

下载消息的附件。

若附件自动下载失败,也可以调用此方法下载。

参数
msg要下载附件的消息。

◆ downloadThumbnail()

void com.hyphenate.chat.EMChatManager.downloadThumbnail ( final EMMessage  msg)

下载消息的缩略图。

参数
msg要下载缩略图的消息。只有图片消息和视频消息有缩略图。

◆ getAllConversations()

Map< String, EMConversation > com.hyphenate.chat.EMChatManager.getAllConversations ( )

获取本地当前所有会话。

该方法会先从内存中获取,如果未找到任何会话,从本地数据库获取。

返回
本地内存或者数据库中所有的会话。

◆ getConversation() [1/4]

EMConversation com.hyphenate.chat.EMChatManager.getConversation ( String  id)

获取指定 ID 的会话对象。

参数
id会话 ID。
返回
根据指定会话 ID 找到的会话对象,如果没有找到会返回空值。

◆ getConversation() [2/4]

EMConversation com.hyphenate.chat.EMChatManager.getConversation ( String  id,
EMConversationType  type 
)

根据会话 ID 以及会话类型获取会话。

没有找到返回空值。

参数
id会话 ID。
  • 单聊:对端用户的用户 ID;
  • 群聊:群组 ID;
  • 聊天室:聊天室 ID;
  • 子区:子区 ID。
type会话类型,详见 EMConversationType
返回
根据指定 ID 以及会话类型找到的会话对象,未找到会返回空值。

◆ getConversation() [3/4]

EMConversation com.hyphenate.chat.EMChatManager.getConversation ( String  username,
EMConversationType  type,
boolean  createIfNotExists 
)

根据会话 ID 和会话类型获取会话。

参数
username会话 ID。
  • 单聊:对端用户的用户 ID;
  • 群聊:群组 ID;
  • 聊天室:聊天室 ID;
  • 子区:子区 ID。
type会话类型,详见 EMConversationType
createIfNotExists未找到指定会话时是否创建一个新会话。
  • true:是;
  • false:否。
返回
找到的会话对象,如果未找到,返回空值。

◆ getConversation() [4/4]

EMConversation com.hyphenate.chat.EMChatManager.getConversation ( String  username,
EMConversationType  type,
boolean  createIfNotExists,
boolean  isChatThread 
)

根据会话 ID 以及会话类型获取会话。

参数
username会话 ID。
  • 单聊:对端用户的用户 ID;
  • 群聊:群组 ID;
  • 聊天室:聊天室 ID;
  • 子区:子区 ID。
type会话类型,详见 EMConversationType
createIfNotExists未找到指定会话时是否创建一个新会话。
  • true:是;
    • false:否。
isChatThread是否查找子区会话。
  • true:是;
    • false:否。
返回
找到的会话对象。如果未找到,返回空值。

◆ getConversationsByType()

List< EMConversation > com.hyphenate.chat.EMChatManager.getConversationsByType ( EMConversationType  type)

获取指定类型的所有会话。

参数
type会话类型,详见 EMConversationType
返回
指定类型的会话列表。

◆ getMessage()

EMMessage com.hyphenate.chat.EMChatManager.getMessage ( String  messageId)

获取指定 ID 的消息对象。

参数
messageId消息 ID。
返回
根据指定 ID 获取的消息对象,如果消息不存在会返回空值。

◆ getUnreadMessageCount()

int com.hyphenate.chat.EMChatManager.getUnreadMessageCount ( )

获取未读消息数。

返回
未读消息数。

◆ recallMessage()

void com.hyphenate.chat.EMChatManager.recallMessage ( EMMessage  message) throws HyphenateException

撤回发送成功的消息。

若消息发送和撤回时接收方为离线状态,接收方会收到消息撤回回调 EMMessageListener#onMessageRecalled,不会收到该消息。

同步方法,会阻塞当前线程。

参数
message消息对象。
异常
HyphenateException如果有异常会在这里抛出,包含错误码和错误描述,详见 EMError

◆ removeConversationListener()

void com.hyphenate.chat.EMChatManager.removeConversationListener ( EMConversationListener  listener)

移除会话监听器。

调用 addConversationListener(EMConversationListener) 添加会话监听器后再调用本方法移除。

参数
listener要移除的会话监听器,详见 EMConversationListener

◆ removeMessageListener()

void com.hyphenate.chat.EMChatManager.removeMessageListener ( EMMessageListener  listener)

移除消息监听器。

调用 addMessageListener(EMMessageListener) 添加消息监听后再调用本方法移除。

参数
listener要移除的监听器,详见 EMMessageListener

◆ removeMessagesFromServer()

void com.hyphenate.chat.EMChatManager.removeMessagesFromServer ( String  conversationId,
EMConversationType  type,
long  beforeTimeStamp,
EMCallBack  callBack 
)
protected

从本地数据库获取指定会话的一定数量的特定类型的消息。

参数
type消息类型。详见 Type
timeStamp查询的起始消息 Unix 时间戳,单位为毫秒。该参数设置后,SDK 从指定时间戳的消息开始,按消息搜索方向获取。 如果该参数设置为负数,SDK 从当前时间开始搜索。
maxCount每次获取的最大消息数。取值范围为 [1,400]。
from单聊或群聊中的消息发送方的用户 ID。若设置为 null 或空字符串,SDK 将在整个会话中搜索消息。
direction消息搜索方向。详见 EMConversation.EMSearchDirection
  • (默认)UP:按照消息中的时间戳的逆序查询;
    • DOWN:按照消息中的时间戳的正序查询。
返回
消息列表(不包含查询起始时间戳对应的消息)。若未查找到任何消息,返回空列表。

从本地数据库获取指定会话中包含特定关键字的消息。

参数
keywords查询关键字。
timeStamp查询的起始消息 Unix 时间戳,单位为毫秒。该参数设置后,SDK 从指定时间戳的消息开始,按消息搜索方向获取。 如果该参数设置为负数,SDK 从当前时间开始搜索。
maxCount每次获取的最大消息数。取值范围为 [1,400]。
from单聊或群聊中的消息发送方的用户 ID。若设置为 null 或空字符串,SDK 将在整个会话中搜索消息。
direction消息搜索方向。详见 EMConversation.EMSearchDirection
  • (默认)UP:按照消息中的时间戳的逆序查询;
    • DOWN:按照消息中的时间戳的正序查询。
返回
消息列表(不包含查询起始时间戳对应的消息)。若未查找到任何消息,返回空列表。

删除指定时间戳之前的本地历史消息。

参数
timeStamp查询的消息的起始 Unix 时间戳,单位为毫秒。
callback删除结果回调,详见 EMCallBack

举报非法消息。

异步方法。

参数
msgId要举报的消息 ID。
tag非法消息的标签。你需要填写自定义标签,例如涉政广告
reportReason举报原因。你需要自行填写举报原因。
callBack结果回调,详见 EMCallBack

举报非法消息。

同步方法,会阻塞当前线程。

参数
msgId要举报的消息 ID。
tag非法消息的标签。你需要填写自定义标签,例如涉政广告
reportReason举报原因。你需要自行填写举报原因。
异常
HyphenateException如果有异常会在这里抛出,包含错误码和错误描述,详见 EMError。 获取翻译服务支持的语言。
参数
callBack结果回调,详见 EMCallBack

翻译一条文本消息。

参数
message要翻译的消息对象。
languages目标语言代码列表。
callBack结果回调,详见 EMCallBack

添加 Reaction。

同步方法。

参数
messageId消息 ID。
reaction要添加的消息 Reaction。
异常
HyphenateException如果有异常会在这里抛出,包含错误码和错误描述,详见 EMError

添加 Reaction。

异步方法。

参数
messageId消息 ID。
reaction要添加的消息 Reaction。
callback处理结果回调,失败会返回失败原因。详见 EMCallBack

删除 Reaction。

同步方法。

参数
messageId消息 ID。
reaction要删除的 Reaction。
异常
HyphenateException如果有异常会在这里抛出,包含错误码和错误描述,详见 EMError

删除 Reaction。

异步方法。

参数
messageId消息 ID。
reaction要删除的 Reaction。
callback处理结果回调,详见 EMCallBack

获取 Reaction 列表。

同步方法。

参数
messageIdList消息 ID。
chatType会话类型,仅支持单聊(EMMessage.ChatType#Chat)和群聊(EMMessage.ChatType#GroupChat)。
groupId群组 ID,该参数仅对群聊生效。
返回
map 指定消息 ID 对应的 Reaction 列表(EMMessageReaction 的用户列表 UserList 为概要数据,只包含前三个用户信息)。

获取 Reaction 列表。

异步方法。

参数
messageIdList消息 ID。
chatType会话类型,仅支持单聊(EMMessage.ChatType#Chat )和群聊(EMMessage.ChatType#GroupChat)。
groupId群组 ID,该参数只对群聊生效。
callback处理结果回调,包含消息 ID 对应的 Reaction 列表(EMMessageReaction 的用户列表 UserList 为概要数据,只包含前三个用户信息)。

获取 Reaction 详细信息。

同步方法。

参数
messageId消息 ID。
reaction消息 Reaction 内容。
cursor查询的起始游标位置。
pageSize每页期望获取的 Reaction 数。
返回
获取结果 EMCursorResult,包含 cursor 和 Reaction 列表。若 cursor 为空表示数据已全部获取。

获取 Reaction 详细信息。

异步方法。

参数
messageId消息 ID。
reaction消息 Reaction。
cursor查询的起始游标位置。
pageSize每页期望获取的 Reaction 数。
callback处理结果回调,包含 cursor 和 EMMessageReaction 列表(仅使用该列表第一个数据即可)。

根据消息 ID 单向删除漫游消息。

参数
conversationId会话 ID。
type会话类型。
msgIdList要删除的消息 ID 列表。
callBack处理结果回调,详见 EMCallBack

根据时间戳单向删除漫游消息。

参数
conversationId会话 ID。
type会话类型。
beforeTimeStampUNIX 时间戳,单位为毫秒。若消息的 UNIX 时间戳小于设置的值,则会被删除。
callBack处理结果回调,详见 EMCallBack

◆ saveMessage()

void com.hyphenate.chat.EMChatManager.saveMessage ( EMMessage  message)

保存消息到内存和本地数据库。

命令消息(类型见:Type#CMD,消息体见:EMCmdMessageBody)不会在本地保存。

参数
message待存储的消息。

◆ sendMessage()

void com.hyphenate.chat.EMChatManager.sendMessage ( final EMMessage  msg)

发送消息。

如果是语音,图片类等有附件的消息,SDK 会自动上传附件。

可以通过 EMOptions#setAutoTransferMessageAttachments(boolean) 设置是否上传到聊天服务器。

发送消息的状态,可以通过设置 EMMessage#setMessageStatusCallback(EMCallBack) 进行监听。

参数
msg要发送的消息,必填。

◆ setVoiceMessageListened()

void com.hyphenate.chat.EMChatManager.setVoiceMessageListened ( EMMessage  message)

将语音消息设置为已听。

参数
message要设置的消息对象。

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