浏览 SDKs · Android
平台
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);
}

回调说明

回调方法参数类型说明
onRecvNewMessageMessage接收单条实时新消息。
onRecvOfflineNewMessageList<Message>登录上线后收到的批量离线消息。
onRecvOnlineOnlyMessageMessage接收仅在线消息(不计入未读数、离线不补偿)。

状态合并规范

  • 收到普通消息和离线消息时,客户端应首先结合 sessionType、sendID、recvID 与 groupID 确认其所属会话,并在会话消息列表中以 clientMsgID 为唯一键进行去重与状态更新。
  • onRecvOnlineOnlyMessage 仅用于临时状态同步或即时轻量通知,通常不需要存入本地消息数据库。
  • 消息撤回、删除、修改与已读回执事件分别在对应功能页及消息概览中详细说明。