Android

服务端会话服务

更新时间: 2025/11/20 11:29:54

网易云信服务端会话列表由服务器维护。

  • 支持存储用户全量的会话历史列表以及保存最近一条消息。

  • 支持客户端从服务端拉取会话列表,不支持同步到本地会话列表。

  • 不支持未读数。

技术原理

  • RecentSession:与用户最近有过会话的联系人信息,包括联系人帐号、最近一条消息的时间、扩展字段、消息内容等。

  • RecentSessionList:一页会话列表数据,包含一页 RecentSession 数据,以及是否有更早消息的提示。

前提条件

已在 云信控制台 IM 即时通讯 > 全局功能 开通 服务端会话列表 功能。

获取服务端会话

获取服务端会话列表

  • 接口:queryMySessionList

  • 参数说明:

    参数 说明
    option 配置参数,详见 QueryMySessionOption
  • 示例代码:

    javaQueryMySessionOption option = new QueryMySessionOption();
    option.setMinTimestamp(startTime);
    option.setMaxTimestamp(endTime);
    
    NIMClient.getService(MsgService.class).queryMySessionList(option).setCallback(new RequestMySessionListCallback(queryAmount, startTime, this::showSessionList));
    

获取服务端指定会话

  • 接口:queryMySession

  • 参数说明:

    参数 说明
    sessionId 会话 ID。单聊:p2p|accid;群聊:team|tid;超大群:super_team|tid,不可为空。
  • 示例代码:

    javaNIMClient.getService(MsgService.class).queryMySession(sessionId).setCallback(new RequestCallback<RecentSession>() {
                @Override
                public void onSuccess(RecentSession param) {
                    resultTV.setText(sessionToString(param));
                }
    
                @Override
                public void onFailed(int code) {
                    Toast.makeText(SessionActivity2.this, "获取单条会话失败, code=" + code, Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onException(Throwable exception) {
                    exception.printStackTrace();
                    Toast.makeText(SessionActivity2.this, "获取单条会话出现异常, msg=" + exception.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    

修改服务端会话扩展信息

  • 接口:updateMySession

  • 参数说明:

    参数 说明
    sessionId 会话 ID。单聊:p2p|accid;群聊:team|tid;超大群:super_team|tid,不可为空。
    ext 会话的扩展字段,仅自己可见。
  • 示例代码:

    javaNIMClient.getService(MsgService.class).updateMySession(sessionId).setCallback(new RequestCallback<Void>() {
                @Override
                public void onSuccess(Void param) {
                    Toast.makeText(SessionActivity2.this, "更新会话成功", Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onFailed(int code) {
                    Toast.makeText(SessionActivity2.this, "更新会话失败, code=" + code, Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onException(Throwable exception) {
                    Toast.makeText(SessionActivity2.this, "更新会话出现异常, msg=" + exception.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    

删除服务端会话

  • 接口:deleteMySession

  • 参数说明:

    参数 说明
    sessionIdArr 会话列表。单聊、群组、超大群每一项会话的格式分别是:
    单聊:p2p|accid;群聊:team|tid;超大群:super_team|tid
  • 示例代码:

    javaNIMClient.getService(MsgService.class).deleteMySession(selectedArr).setCallback(new RequestCallback<Void>() {
                @Override
                public void onSuccess(Void param) {
                    Toast.makeText(SessionActivity2.this, "删除会话成功", Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onFailed(int code) {
                    Toast.makeText(SessionActivity2.this, "删除会话失败, code=" + code, Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onException(Throwable exception) {
                    exception.printStackTrace();
                    Toast.makeText(SessionActivity2.this, "删除会话出现异常, msg=" + exception.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    
此文档是否对你有帮助?
有帮助
去反馈
  • 技术原理
  • 前提条件
  • 获取服务端会话
  • 获取服务端会话列表
  • 获取服务端指定会话
  • 修改服务端会话扩展信息
  • 删除服务端会话