即时通讯
客户端 SDK
发布日志
升级指南
当前页

频道会话管理

2026-05-22

功能简介

每个社群频道都对应一个类型为 COMMUNITY_CHANNEL 的会话。通过频道的 conversationID,可以使用 ZIM 标准的会话管理接口来操作频道会话,包括:

  • 获取频道列表(含会话 ID)
  • 清除频道未读消息数
  • 设置/清除频道会话草稿
  • 设置频道会话免打扰
  • 监听频道会话变更

前提条件

  • 请参考 实现基本消息收发 完成 ZIM SDK 获取、初始化和用户登录。
  • 请参考 使用 Token 鉴权 实现用户鉴权登录。
  • 社群功能需要 ZIM SDK 3.0.0 及以上版本。
  • 社群功能为旗舰版功能,使用前请联系 ZEGO 技术支持开通。
  • 社群功能的 Token 生成方式与其他 ZIM 功能一致,无需额外权限声明。
说明
  • 频道会话的 conversationID 与频道的 channelID 不同,发送消息和管理会话时请使用从 ZIMCommunityChannel 对象中获取的 conversationID 字段。
注意

请勿将 channelID 误当作 conversationID 使用。发送消息和进行会话管理操作时,必须使用从频道对象(ZIMCommunityChannel)中获取的 conversationID,而非 channelID

获取频道列表

在进行频道会话管理之前,需要先调用 queryCommunityChannelListByCommunityID 接口获取频道列表,从返回的 ZIMCommunityChannel 对象中取得 conversationID,用于后续的会话操作。

分页规则:首次将 config.nextFlag 设为 0,将返回的 nextFlag 传入下次请求,直到返回 0 为止。

ZIMCommunityChannelListQueryConfig *config = [[ZIMCommunityChannelListQueryConfig alloc] init];
config.nextFlag = 0;

[zim queryCommunityChannelList:communityID count:100 config:config callback:^(NSString * _Nonnull communityID, NSArray<ZIMCommunityChannel *> * _Nonnull channelList, long long nextFlag, ZIMError * _Nonnull errorInfo) {
    if (errorInfo.code == ZIMErrorCodenoneSuccess) {
        for (ZIMCommunityChannel *channel in channelList) {
            NSString *conversationID = channel.conversationID; // 用于后续会话管理
        }
    }
}];

清除未读消息数

调用 clearConversationUnreadMessageCount 接口,将指定频道会话的未读消息数清零。清除成功后,会触发 conversationChanged 回调,反映最新的会话状态。

[zim clearConversationUnreadMessageCount:channel.conversationID conversationType:ZIMConversationTypeCommunityChannel callback:^(NSString * _Nonnull conversationID, ZIMConversationType conversationType, ZIMError * _Nonnull errorInfo) {
    if (errorInfo.code == ZIMErrorCodenoneSuccess) {
        // 未读数已清零
    }
}];

设置会话草稿

调用 setConversationDraft 接口,为指定频道会话保存草稿内容,用于用户退出频道后继续编辑。草稿内容仅存储在本地,不会发送给其他用户。

说明

如需清空草稿,将 draft 传入空字符串即可。

[zim setConversationDraft:@"这是草稿内容" conversationID:channel.conversationID conversationType:ZIMConversationTypeCommunityChannel callback:^(NSString * _Nonnull conversationID, ZIMConversationType conversationType, ZIMError * _Nonnull errorInfo) {
    if (errorInfo.code == ZIMErrorCodenoneSuccess) {
        // 草稿保存成功
    }
}];

设置会话通知状态

调用 setConversationNotificationStatus 接口,设置指定频道会话的消息免打扰状态。设置为免打扰后,该频道的未读消息数将不再累加到社群总未读数中,也不会触发系统推送。

[zim setConversationNotificationStatus:ZIMConversationNotificationStatusDoNotDisturb conversationID:channel.conversationID conversationType:ZIMConversationTypeCommunityChannel callback:^(NSString * _Nonnull conversationID, ZIMConversationType conversationType, ZIMError * _Nonnull errorInfo) {
    if (errorInfo.code == ZIMErrorCodenoneSuccess) {
        // 设置成功
    }
}];

监听频道列表变更

当社群中频道被创建或解散或列表可见信息变更时,频道列表会随之变化。SDK 会通过 onCommunityChannelListChanged 回调通知开发者,开发者可在该回调中重新获取频道列表,更新本地的 conversationID 映射关系。详见 社群频道管理 — 监听频道列表变更

说明

频道会话的变更(如未读数变化、草稿更新等)同样会触发 conversationChanged 回调。可参考 获取会话列表 了解会话变更监听的完整用法。

相关参考

上一篇

频道消息管理

下一篇

社群禁言

当前页

返回到顶部