Skip to content
v1
文档/iOS SDK/会话

获取会话列表

接口

objc
- (void)getConversationListWithSucc:(BIMConversationListSucc)succ fail:(BIMFail)fail;
- (void)getLocalConversationListWithSucc:(BIMConversationListSucc)succ fail:(BIMFail)fail;
- (void)setConversationDraft:(NSString *)chatId draftText:(NSString * _Nullable)draftText;
- (void)clearConversationDraft:(NSString *)chatId;
- (void)getConversationSetting:(BIMConversation *)conversation succ:(void (^)(BIMConversationSetting * _Nullable setting))succ fail:(BIMFail)fail;
- (void)updateConversationSetting:(BIMConversation *)conversation setting:(BIMConversationSetting *)setting succ:(BIMSucc)succ fail:(BIMFail)fail;
- (void)deleteConversation:(BIMConversation *)conversation succ:(BIMSucc)succ fail:(BIMFail)fail;

getConversationListWithSucc 会先返回本地缓存,随后在内部同步服务端;远端变化通过 BIMConversationListener 的新增/变更回调通知。只需要本地快照且不希望发起网络请求时,使用 getLocalConversationListWithSucc

代码示例

swift
BIMManager.sharedInstance().getConversationList { conversations in
    print("conversation count=\(conversations.count)")
} fail: { code, desc in
    print("getConversationList fail: \(code) \(desc)")
}

未读数字段

每个 BIMConversation.unreadCount 由 SDK 根据有效序列计算:

text
max(lastDeliverySeq - max(selfReadSeq, setting.localSeq), 0)

服务端同步返回的独立 unread_count 不作为最终真值。后台回前台或重新漫游后,SDK 会保留更大的本地 lastDeliverySeq/selfReadSeq,再重新计算未读数,避免旧响应覆盖本地已读进度。

接入方直接展示 conversation.unreadCount 即可,不要再次对序列做一套不同的计算。