> ## Documentation Index
> Fetch the complete documentation index at: https://wukong.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 会话管理

> WuKongIM iOS SDK 会话管理功能，包括会话列表、未读消息和会话扩展

负责最近会话数据的管理，比如：新增最近会话，删除最近会话，未读消息数量等等。

文档只介绍核心方法，更多内容查看代码的`[WKSDK shared].conversationManager`接口。

## 最近会话列表

### 数据操作

获取本地最近会话列表

```objc theme={null}
NSArray<WKConversation*> *conversations = [[WKSDK shared].conversationManager getConversationList];
```

### 数据监听

添加`WKConversationManagerDelegate`

```objc theme={null}
[[WKSDK shared].conversationManager addDelegate:self];
```

WKConversationManagerDelegate说明

```objc theme={null}

/**
 当最近会话对象更新的时候会调用此方法

 @param conversations 最近会话集合
 */
- (void)onConversationUpdate:(NSArray<WKConversation*>*)conversations;

/**
 最近会话未读数发送改变

 @param channel 频道
 @param unreadCount 未读数量
 */
- (void)onConversationUnreadCountUpdate:(WKChannel*)channel unreadCount:(NSInteger)unreadCount;
```

### 数据源

`触发时机：当建立连接后，由SDK主动触发拉取离线后的最近会话`

增量同步离线后的最近会话数据

```objc theme={null}
// version 数据版本号
// lastMsgSeqs 拼接好的最近会话seq关系数据
// callback  当请求服务器获取到消息后，SDK应调用此回调 （注意： 不管请求失败与否都需要调用callback）
[[WKSDK shared].conversationManager setSyncConversationProviderAndAck:^(long long version, NSString * _Nonnull lastMsgSeqs, WKSyncConversationCallback  _Nonnull callback) {

} ack:^(uint64_t cmdVersion, void (^ _Nullable complete)(NSError * _Nullable)) {
     // 如果不需要ack回执，直接调用complete(nil);
     complete(nil);
}];
```

示例:

<img src="https://mintcdn.com/wukong/4UAfvLHsiqoDhOFO/zh/sdk/wukongim/ios/conversationProvider.png?fit=max&auto=format&n=4UAfvLHsiqoDhOFO&q=85&s=934d53e784902845d95e85686570b880" alt="示例" width="1872" height="1208" data-path="zh/sdk/wukongim/ios/conversationProvider.png" />

````

## 最近会话扩展

通过最近会话扩展属性，可以自定义自己独特的业务属性，比如实现类似微信的草稿功能，并且草稿数据多端同步

### 数据操作

#### 更新扩展

```objc
[[WKSDK shared].conversationManager updateOrAddExtra:(WKConversationExtra*)extra]
````

#### 同步扩展

```objc theme={null}
[[WKSDK shared].conversationManager syncExtra]
```

### 数据监听

如何最近会话对象的数据变化都会触发`WKConversationManagerDelegate`委托，同理 调用`updateOrAddExtra`也会触发此委托

### 数据源

#### 更新扩展

`触发时机：调用[[WKSDK shared].conversationManager updateOrAddExtra]时触发`

```objc theme={null}
// extra 更新的扩展数据
// callback 更新完毕后回调给sdk
[[WKSDK shared].conversationManager setUpdateConversationExtraProvider:^(WKConversationExtra * _Nonnull extra, WKUpdateConversationExtraCallback  _Nonnull callback) {

}];
```

#### 同步扩展

`触发时机：调用[[WKSDK shared].conversationManager syncExtra]时触发`

```objc theme={null}
// version 客户端本地存在的最新扩展数据版本
// callback 同步扩展后将数据回调给sdk
[[WKSDK shared].conversationManager setSyncConversationExtraProvider:^(long long version, WKSyncConversationExtraCallback  _Nonnull callback) {

}];
```

## 下一步

<CardGroup cols={2}>
  <Card title="多媒体消息" icon="image" href="/zh/sdk/wukongim/ios/media">
    学习如何处理多媒体消息
  </Card>

  <Card title="聊天管理" icon="message-circle" href="/zh/sdk/wukongim/ios/chat">
    回到聊天消息管理
  </Card>

  <Card title="频道管理" icon="hash" href="/zh/sdk/wukongim/ios/channel">
    管理频道信息
  </Card>

  <Card title="连接管理" icon="link" href="/zh/sdk/wukongim/ios/connection">
    管理连接状态
  </Card>
</CardGroup>
