IM 即时通讯
服务端会话服务
更新时间: 2021/07/22 20:14:10
服务端会话服务与本地最近会话不同,其提供了新的会话列表获取服务,需要从云端拉取,不支持同步到本地最近会话列表。
-
服务器支持存储用户全量的会话历史列表以及保存最近一条消息;
-
客户端获取会话列表,支持按照需要指定获取的会话数,不与本地会话合并;
-
不支持未读数;
获取会话列表
获取服务端会话列表,不依赖本地;
/**
* 读取服务器会话列表block
*
* @param error 错误,如果成功则error为nil
* @param recentSessions 读取的消息列表
* @param hasMore 最小时间戳只有请求第一页时会返回这个参数,表示下一次增量同步时带在请求参数里
*/
typedef void(^NIMFetchRecentSessionsHistoryBlock)(NSError * __nullable error,
NSArray<NIMRecentSession *> * __nullable recentSessions,
BOOL hasMore);
@protocol NIMConversationManager <NSObject>
/**
* 从服务端分页获取历史会话列表
*
* @param option 分页查询选项,可为空,空时默认全量获取
*
* @param completion 完成回调
*/
- (void)fetchServerSessions:(nullable NIMFetchServerSessionOption *)option
completion:(nullable NIMFetchRecentSessionsHistoryBlock)completion;
@end
属性列表
参数 | 类型 | 说明 |
---|---|---|
option | NIMFetchServerSessionOption | 获取最近会话选项 |
completion | NIMFetchRecentSessionsHistoryBlock | 结果列表 |
NIMRecentSession参数:
参数 | 类型 | 说明 |
---|---|---|
session | NIMSession | 当前会话 |
unreadCount | NSInteger | 未读消息数 |
localExt | NSDictionary | 本地扩展 |
updateTime | NSTimeInterval | 服务端会话的最新更新时间,本地会话无效 |
serverExt | NSString | 会话服务扩展字段(本地会话该字段无效) |
lastMessageType | NIMLastMsgType | 最后一条消息的类型(本地会话该字段无效) |
lastMessage | NIMMessage | 最后一条消息 |
lastRevokeNotification | NIMRevokeMessageNotification | 最后一条消息的类型(本地会话该字段无效) |
示例
// 下一页
NIMFetchServerSessionOption * option = [[NIMFetchServerSessionOption alloc] init];
option.needLastMessage = needLastMsg;
option.minTimestamp = min;
option.maxTimestamp = currentMin - 1;
option.limit = limit;
[[NIMSDK sharedSDK].conversationManager fetchServerSessions:option completion:^(NSError * _Nullable error, NSArray<NIMRecentSession *> * _Nullable recentSessions, BOOL hasMore) {}];
获取指定会话
获取指定服务端会话详细信息;
@protocol NIMConversationManager <NSObject>
/**
* 从服务端获取会话信息
*
* @param session 目标会话
*
* @param completion 完成回调
*/
- (void)fetchServerSessionBySession:(NIMSession *)session
completion:(nullable NIMFetchRecentSessionHistoryBlock)completion;
@end
属性列表
参数 | 类型 | 说明 |
---|---|---|
session | NIMSession | 目标会话 |
completion | NIMFetchRecentSessionHistoryBlock | 会话信息 |
示例
[[NIMSDK sharedSDK].conversationManager fetchServerSessionBySession:recent.session completion:^(NSError * _Nullable error, NIMRecentSession * _Nullable recentSession) {}];
修改服务端会话扩展
更新服务端会话扩展;
@protocol NIMConversationManager <NSObject>
/**
* 更新服务端获取会话扩展信息
*
* @param ext 扩展信息
*
* @param session 目标最近会话
*
* @param completion 完成回调
*/
- (void)updateServerSessionExt:(NSString *)ext
session:(NIMSession *)session
completion:(nullable NIMRemoteRecentSessionBlock)completion;
@end
属性列表
参数 | 类型 | 说明 |
---|---|---|
ext | NSString | 新的扩展值 |
session | NIMSession | 目标会话 |
completion | NIMRemoteRecentSessionBlock | 完成回调 |
示例
[[NIMSDK sharedSDK].conversationManager updateServerSessionExt:@"newServerExt" session:recentSession.session completion:^(NSError * _Nullable error) { }];
删除服务端会话
@protocol NIMConversationManager <NSObject>
/**
* 删除服务端
*
* @param sessions 目标会话
*
* @param completion 完成回调
*/
- (void)deleteServerSessions:(NSArray<NIMSession *> *)sessions
completion:(nullable NIMRemoteRecentSessionBlock)completion;
@end
属性列表
参数 | 类型 | 说明 |
---|---|---|
sessions | NSArray | 目标会话列表 |
completion | NIMRemoteRecentSessionBlock | 完成回调 |
示例
[[NIMSDK sharedSDK].conversationManager deleteServerSessions:@[recentSession.session] completion:^(NSError * _Nullable error) {}];
此文档是否对你有帮助?
有帮助
我要吐槽