# 会话管理

七鱼 iOS SDK 提供会话项相关信息,支持多会话,具体见 平台电商 相关说明。对于非平台企业,会话项一般只有一项,会话相关管理类QYConversationManager单例通过如下方法获取:

[[QYSDK sharedSDK] conversationManager];

可获取会话消息未读数、清除未读数、获取会话列表、监听会话项变化等。

# 消息未读数

可通过如下接口主动获取消息的未读数量,用于显示未读红点:

/**
 *  所有的未读数
 *
 *  @return 未读数
 */
- (NSInteger)allUnreadCount;

如需收到未读消息数量变化通知,通过如下接口设置委托:

/**
 *  设置会话委托
 *
 *  @param delegate 会话委托
 */
- (void)setDelegate:(id<QYConversationManagerDelegate>)delegate;

并实现该委托中如下方法即可监听数量变化:

/**
 *  会话未读数变化
 *
 *  @param count 未读数
 */
- (void)onUnreadCountChanged:(NSInteger)count;

该未读数为所有会话项的总未读数,如需分开需获取会话列表。如需清空消息未读数量,请调用如下接口:

/**
 *  清空未读数
 *
 */
- (void)clearUnreadCount;

# 会话列表

可通过如下接口主动获取会话列表,用于构建会话列表页面:

/**
 *  获取所有会话的列表;非平台电商用户,只有一个会话项,平台电商用户,有多个会话项
 *
 *  @return 包含SessionInfo的数组
 */
- (NSArray<QYSessionInfo *> *)getSessionList;

如需收到会话列表变化通知,实现委托中如下方法即可:

/**
 *  会话列表变化;非平台电商用户,只有一个会话项,平台电商用户,有多个会话项
 */
- (void)onSessionListChanged:(NSArray<QYSessionInfo *> *)sessionList;

会话列表数据以数组形式提供,每个数组元素为QYSessionInfo对象,提供如下属性:

属性 类型 说明
lastMessageText NSString 会话最后一条消息文本
lastMessage NIMMessage 会话最后一条消息
lastMessageType NSInteger 消息类型:文本/图片/语音/视频/自定义
unreadCount NSInteger 会话未读数
status NSInteger 会话状态:无/排队中/会话中
lastMessageTimeStamp NSTimeInterval 会话最后一条消息时间戳
hasTrashWords BOOL 是否存在垃圾词汇

# 监听消息接收

如需实时监听消息接收情况,实现协议QYConversationManagerDelegate中的如下方法:

/**
 *  接收消息
 */
- (void)onReceiveMessage:(QYMessageInfo *)message;

接口提供接收到的最新消息对象QYMessageInfo类,该类提供如下属性:

属性 类型 说明
text NSString 消息文本
type NSInteger 消息类型:文本/图片/语音/视频/自定义
timeStamp NSTimeInterval 消息时间戳