IM 即时通讯
Android
开发指南

服务端会话服务

更新时间: 2024/01/03 10:31:25

服务端会话列表由服务器维护:

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

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

  • 不支持未读数

技术原理

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

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

前提条件

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

获取服务端会话

获取服务端会话列表

参数 说明
option 配置参数,详见 QueryMySessionOption
  • 示例代码:
NIMClient.getService(MsgService.class).queryMySessionList(startTime, endTime, 1, queryAmount, 1).setCallback(new RequestMySessionListCallback(queryAmount, startTime, this::showSessionList));

获取服务端指定会话

参数 说明
sessionId 会话 ID。如会话为单聊类型,则为聊天对象的 accid;如为群聊类型,则为群 ID,即teamId。
  • 示例代码:
NIMClient.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();
            }
        });

修改服务端会话扩展信息

参数 说明
sessionId 会话 ID。如会话为单聊类型,则为聊天对象的 accid;如为群聊类型,则为群 ID,即teamId。
ext 会话的扩展字段,仅自己可见。
  • 示例代码:
NIMClient.getService(MsgService.class).updateMySession(sessionIdET.getText().toString(), extET.getText().toString()).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();
            }
        });

删除服务端会话

参数 说明
sessionIdArr 聊天、群组、超大群每一项会话的格式,分别是:p2p | accid、team | tid、super_team | tid
  • 示例代码:
NIMClient.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();
            }
        });
此文档是否对你有帮助?
有帮助
去反馈
  • 技术原理
  • 前提条件
  • 获取服务端会话
  • 获取服务端会话列表
  • 获取服务端指定会话
  • 修改服务端会话扩展信息
  • 删除服务端会话