跳到主要内容

插入消息

您可以通过 IMCenterinsertOutgoingMessageinsertIncomingMessage 方法向本地会话中插入发送或接收方向的消息。

重要说明
  • 插入的消息仅存储在本地数据库中,不会发送到服务器或对方设备。
  • 卸载重装应用或切换设备登录时,插入的消息不会从服务器同步到本地。
  • 插入消息后会自动更新 UI 界面。

使用要求

  • 插入的消息必须为客户端支持存储的消息类型,参考消息介绍文档的了解消息注解部分。
  • 消息内容需要符合对应消息类型的数据结构要求。

插入发送消息

接口

Java
IMCenter.getInstance().insertOutgoingMessage(conversationType, targetId, sentStatus, content, sentTime,callback);

参数说明

参数类型必填说明
conversationTypeConversationType会话类型
targetIdString会话 ID,详见消息介绍中关于 Target ID 的说明
sentStatusMessage.SentStatus发送状态
contentMessageContent消息内容
sentTimelong消息的发送时间,消息列表会按此时间排序并展示
callbackIRongCallback.ResultCallback<Message>回调接口

示例代码

Java
ConversationType conversationType = ConversationType.PRIVATE;
String targetId = "user1";
SentStatus sentStatus = SentStatus.SENT;
TextMessage content = TextMessage.obtain("这里是消息内容");
long sentTime = System.currentTimeMillis();

IMCenter.getInstance().insertOutgoingMessage(conversationType, targetId, sentStatus, content, sentTime, new RongIMClient.ResultCallback<Message>() {
/**
* 成功回调
* @param message 插入的消息
*/
@Override
public void onSuccess(Message message) {
// 处理插入成功的逻辑
}

/**
* 失败回调
* @param errorCode 错误码
*/
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
// 处理插入失败的逻辑
}
});

插入接收消息

接口

Java
IMCenter.getInstance().insertIncomingMessage(conversationType, targetId, senderUserId, receivedStatus, content, sentTime, callback);

参数说明

参数类型必填说明
conversationTypeConversationType会话类型
targetIdString目标/会话 ID,用于标识会话。注意:单聊会话中插入接收消息时,Target ID 始终是单聊对端用户 ID;群聊、超级群的会话 ID 分别为群组 ID、超级群 ID。详见消息介绍中关于 Target ID 的说明。
senderUserIdString发送方用户 ID
receivedStatusMessage.ReceivedStatus接收状态
contentMessageContent消息内容
sentTimelong消息的发送时间,消息列表会按此时间排序并展示
callbackIRongCallback.ResultCallback<Message>回调接口

示例代码

Java
ConversationType conversationType = ConversationType.PRIVATE;
String targetId = "user1";
String senderUserId = "sender_user_id"; // 发送方用户 ID
ReceivedStatus receivedStatus = new ReceivedStatus(0x1);
TextMessage content = TextMessage.obtain("这是一条插入的接收消息");
long sentTime = System.currentTimeMillis();

IMCenter.getInstance().insertIncomingMessage(conversationType, targetId, senderUserId, receivedStatus, content, sentTime, new RongIMClient.ResultCallback<Message>() {
/**
* 成功回调
* @param message 插入的消息
*/
@Override
public void onSuccess(Message message) {
// 处理插入成功的逻辑
}

/**
* 失败回调
* @param errorCode 错误码
*/
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
// 处理插入失败的逻辑
}
});

直接显示消息对象

如果您已有完整的消息对象,需要直接添加到当前会话并立即显示,可以使用 appendAndDisplayMessage 方法。 insertOutgoingMessageinsertIncomingMessage 方法已包含插入消息到数据库并显示到会话的功能,通常无需额外调用此方法。

提示
  • 此接口从 5.28.0 版本开始支持。
  • sentTime 设置错误会影响消息排序,请谨慎使用。
  • 自行构建的 Message 对象需要保证 messageId > 0(默认为 0)
  • sentStatus 字段建议使用 SentStatus.SENT

接口

Java
IMCenter.getInstance().appendAndDisplayMessage(message);

参数说明

参数类型必填说明
messageMessage要添加并显示的消息对象,不可为 null,需要保证 messageId > 0

示例代码

Java
// 假设您已有一个构建好的消息对象
Message existingMessage = ...; // 确保 messageId > 0

IMCenter.getInstance().appendAndDisplayMessage(existingMessage);