跳到主要内容

获取历史消息

开通服务

从远端获取单群聊历史消息是指从融云服务端获取历史消息,该功能要求 App Key 已启用融云提供的单群聊消息云端存储服务。您可以在控制台 IM 服务管理页面为当前使用的 App Key 开启服务。如果使用生产环境的 App Key,请注意仅 IM 旗舰版IM 尊享版可开通该服务。具体功能与费用以融云官方价格说明页面及计费说明文档为准。

提示:请注意区分历史消息记录与离线消息?。融云针对单聊、群聊、系统消息默认提供最多 7 天(可调整)的离线消息缓存服务。客户端上线时 SDK 会自动收取离线期间的消息,无需 App 层调用 API。详见管理离线消息存储配置

获取历史消息

开发者可以通过此接口来获取某个会话的历史消息。

方法

int loadMessages(
RCIMConversationType type,
string targetId,
string channelId,
int sentTime,
RCIMTimeOrder order,
RCIMMessageOperationPolicy policy,
int count
)

参数说明

参数名类型描述
typeRCIMConversationType会话类型
targetIdstring会话 ID
channelIdstring频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
sentTimeint当前消息时间戳
orderRCIMTimeOrder获取消息的方向。
BEFORE:获取 sentTime 之前的消息 (时间递减),
AFTER:获取 sentTime 之后的消息 (时间递增)
policyRCIMMessageOperationPolicy消息的加载策略。
LOCAL:只加载本地,
REMOTE:只加载远端,
LOCAL_REMOTE:本地远端都加载
countint获取的消息数量,count 大于 0,小于等于 20。

返回值

返回值描述
int当次接口操作状态码,并不代表最终操作结果,状态码详细信息

代码示例

int code = engine.loadMessages(
type,
targetId,
channelId,
sentTime,
order,
policy,
count
);

回调方法

  • onMessagesLoaded
delegate void OnMessagesLoadedDelegate(int code,
RCIMConversationType type,
string targetId,
string channelId,
long sentTime,
RCIMTimeOrder order,
List<RCIMMessage> messages);

OnMessagesLoadedDelegate onMessagesLoaded;

参数说明

参数名参数类型描述
codeint接口回调的状态码,0 代表成功,非 0 代表出现异常
typeRCIMConversationType接口调用时传入的会话类型
targetIdstring调用接口时传入的会话 ID
channelIdstring调用接口时传入的频道 ID
sentTimeint调用接口时传入的消息时间戳
orderRCIMTimeOrder调用接口时传入的获取方向
messagesList<RCIMMessage>查询到的消息集合

代码示例

engine.onMessagesLoaded = delegate(
int code,
RCIMConversationType type,
string targetId,
string channelId,
long sentTime,
RCIMTimeOrder order,
List<RCIMMessage> messages
)
{

};

通过 messageId 获取消息

开发者可以通过此接口来获取某条消息。

方法

RCIMMessage getMessageById(int messageId)

参数说明

参数名类型描述
messageIdint消息的 messageId,可在消息对象中获取

返回值

返回值描述
RCIMMessage获取到的消息对象

代码示例

RCIMMessage message = engine.getMessageById(messageId);

通过 messageUId 获取消息

开发者可以通过此接口来获取某条消息。

方法

RCIMMessage getMessageByUId( string messageUId)

参数说明

参数名类型描述
messageUIdstring消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值。

返回值

返回值描述
RCIMMessage获取到的消息对象

代码示例

RCIMMessage message = engine.getMessageByUId(messageUId);