IM 即时通讯
服务端会话服务
更新时间: 2023/03/28 14:54:53
服务端会话服务与本地最近会话不同,其提供了新的会话列表获取服务,需要从云端拉取,不支持同步到本地最近会话列表。
-
服务器支持存储用户全量的会话历史列表以及保存最近一条消息;
-
客户端获取会话列表,支持按照需要指定获取的会话数,不与本地会话合并;
-
不支持未读数;
服务端最近会话对象原型为 RecentSession ,它记录了与用户最近有过会话的联系人信息,包括联系人帐号、最近一条消息的时间、扩展字段、消息内容等信息。
RecentSession接口说明:
返回值 | RecentSession 接口 | 说明 |
---|---|---|
String | getSessionId() | 获取会话的ID(好友帐号,群ID等) |
long | getUpdateTime() | 获取最近一条消息的时间戳 |
String | getExt() | 获取扩展字段 |
String | getLastMsg() | 获取最后一条消息的Json字符串 |
RevokeMsgNotification | getRevokeNotification() | 最后一条消息为撤回通知时,返回不是null 此时,可通过此接口获得一个RevokeMsgNotification实例,里面只有部分内容,或者为空 |
RecentContact | toRecentContact | 新建带有RecentSession信息的RecentContact |
Pair<SessionTypeEnum, String> | parseSessionId | 从session中分离出会话id和会话类型 |
int | getLastMsgType | 最近一条消息的类型,0或者缺失表示普通消息,1表示消息撤回通知 |
服务端会话列表 RecentSessionList,记录了一页 RecentSession 数据,和是否有更早消息的提示。
RecentSessionList 接口说明:
返回值 | RecentSessionList 接口 | 说明 |
---|---|---|
boolean | hasMore() | 是否有更早的消息 |
List<RecentSession> |
getSessionList() | 拉到的一页会话列表 |
获取会话列表
- API 原型
/**
* 【会话服务】增量获取会话列表,增量+翻页
*
* @param minTimestamp 最小时间戳,作为请求参数时表示增量获取Session列表,传0表示全量获取
* @param maxTimestamp 最大时间戳,翻页时使用
* @param needLastMsg 是否需要lastMsg,0或者1,默认1
* @param limit 结果集limit,最大100,默认100
* @param hasMore 没用
* @return InvocationFuture
* @deprecated
* @see MsgService#queryMySessionList(QueryMySessionOption)
*/
InvocationFuture<RecentSessionList> queryMySessionList(long minTimestamp, Long maxTimestamp, Integer needLastMsg, Integer limit, Integer hasMore);
/**
* 【会话服务】增量获取会话列表,增量+翻页
*
* @param option 配置参数
* @return InvocationFuture
*/
InvocationFuture<RecentSessionList> queryMySessionList(QueryMySessionOption option);
- 参数说明
参数 | 说明 |
---|---|
minTimestamp | 最小时间戳,增量获取Session列表,传0表示全量获取 |
maxTimestamp | 最大时间戳,翻页时使用 |
needLastMsg | 是否需要lastMsg,0或者1,默认1 |
limit | 结果集limit,最大100,默认100 |
hasMore | 没用 |
- 示例
NIMClient.getService(MsgService.class).queryMySessionList(startTime, endTime, 1, queryAmount, 1).setCallback(new RequestMySessionListCallback(queryAmount, startTime, this::showSessionList));
获取指定会话
- API 原型
/**
* 【会话服务】获取某一个会话
*
* @param sessionId 分为p2p/team/superTeam,格式分别是:p2p|accid、team|tid、super_team|tid
* @return InvocationFuture
* @see com.netease.nimlib.biz.constant.ITalkService.SessionTag
*/
InvocationFuture<RecentSession> queryMySession(@NonNull String sessionId);
- 参数说明
参数 | 说明 |
---|---|
sessionId | 分为p2p/team/superTeam |
- 示例
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();
}
});
修改服务端会话扩展
- API 原型
/**
* 【会话服务】更新某一个会话,主要是设置会话的ext字段,如果会话不存在,则会创建出来,此时会话没有lastMsg
*
* @param sessionId 分为p2p/team/superTeam,格式分别是:p2p|accid、team|tid、super_team|tid
* @param ext 会话的扩展字段,仅自己可见
* @return InvocationFuture
* @see com.netease.nimlib.biz.constant.ITalkService.SessionTag
*/
InvocationFuture<Void> updateMySession(@NonNull String sessionId, @NonNull String ext);
- 参数说明
参数 | 说明 |
---|---|
sessionId | 分为p2p/team/superTeam |
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();
}
});
删除服务端会话
- API 原型
/**
* 【会话服务】删除会话
*
* @param sessionIdArr 每一项的格式:分为p2p/team/superTeam,格式分别是:p2p|accid、team|tid、super_team|tid
* @return InvocationFuture
* @see com.netease.nimlib.biz.constant.ITalkService.SessionTag
*/
InvocationFuture<Void> deleteMySession(@NonNull String[] sessionIdArr);
- 参数说明
参数 | 说明 |
---|---|
sessionIdArr | 每一项:分别为p2p/team/superTeam |
- 示例
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();
}
});
此文档是否对你有帮助?
有帮助
我要吐槽