浏览 SDKs · Android
SDKsAndroid

接收消息

使用 OnAdvanceMsgListener 接收新消息、离线消息和在线消息。

复制

OnAdvanceMsgListener 统一接收实时消息、离线批次、仅在线消息以及撤回、删除和已读回执等变化。Android SDK 同时只保留一个高级消息 listener;应在登录前由应用级消息状态层设置一次,不要在 Activity、Fragment 或聊天页面重复设置。

private final OnAdvanceMsgListener messageListener = new OnAdvanceMsgListener() {
    @Override
    public void onRecvNewMessage(Message message) {
        mergeMessage(message);
    }

    @Override
    public void onRecvOfflineNewMessage(List<Message> messages) {
        for (Message message : messages) {
            mergeMessage(message);
        }
    }

    @Override
    public void onRecvOnlineOnlyMessage(Message message) {
        handleOnlineOnlyMessage(message);
    }
};

OpenIMClient.getInstance().messageManager.setAdvancedMsgListener(messageListener);

普通消息和离线消息应先根据 sessionTypesendIDrecvIDgroupID 确定目标会话,再按 clientMsgID 去重或替换。onRecvOnlineOnlyMessage 只适合不需要离线补偿的临时业务;不要直接写入需要持久化的普通消息列表。

Android SDK 不提供移除该 listener 的方法。退出登录或切换账号时,停止把旧回调写入页面状态,并在下次登录前设置新账号使用的完整 listener。消息撤回、删除、修改和已读事件分别在对应操作页面说明。