服务端会话服务

服务端会话服务与本地最近会话不同,其提供了新的会话列表获取服务,需要从云端拉取,不支持同步到本地最近会话列表。

获取会话列表

获取服务端会话列表,不依赖本地;

/**
 *  读取服务器会话列表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) {}];