SDKsAndroid
接收消息
配置高级消息监听器,接收新消息、离线消息以及仅在线消息。
配置高级消息监听器统一接收实时新消息、离线历史消息批次、仅在线临时消息以及消息状态变更。Android SDK 仅维护一个全局高级消息监听器,应在 SDK 初始化或登录阶段由应用全局消息层集中注册一次,避免在各个 Activity 或 Fragment 中重复注册引起覆盖。
private final OnAdvanceMsgListener messageListener = new OnAdvanceMsgListener() {
@Override
public void onRecvNewMessage(Message message) {
// 收到实时新消息,按 clientMsgID 合并
mergeMessage(message);
}
@Override
public void onRecvOfflineNewMessage(List<Message> messages) {
// 收到离线消息批次
for (Message message : messages) {
mergeMessage(message);
}
}
@Override
public void onRecvOnlineOnlyMessage(Message message) {
// 收到仅在线消息(不落盘)
handleOnlineOnlyMessage(message);
}
};
public void registerMessageListener() {
OpenIMClient.getInstance().messageManager.setAdvancedMsgListener(messageListener);
}回调说明
| 回调方法 | 参数类型 | 说明 |
|---|---|---|
onRecvNewMessage | Message | 接收单条实时新消息。 |
onRecvOfflineNewMessage | List<Message> | 登录上线后收到的批量离线消息。 |
onRecvOnlineOnlyMessage | Message | 接收仅在线消息(不计入未读数、离线不补偿)。 |
状态合并规范
- 收到普通消息和离线消息时,客户端应首先结合
sessionType、sendID、recvID与groupID确认其所属会话,并在会话消息列表中以clientMsgID为唯一键进行去重与状态更新。 onRecvOnlineOnlyMessage仅用于临时状态同步或即时轻量通知,通常不需要存入本地消息数据库。- 消息撤回、删除、修改与已读回执事件分别在对应功能页及消息概览中详细说明。
这个页面有帮助吗?