浏览 SDKs · iOS
平台
SDKsiOS商业版

会话分组概览

了解 OpenIM iOS SDK 会话分组的数据边界和 listener 生命周期。

复制

会话分组用于整理当前登录用户的会话列表。它管理 conversationID 与分组的关系,不会创建聊天群组、修改群成员,也不会改变消息发送目标。

iOS SDK 通过随 OpenIMSDK 发布的 OpenIMCore Objective-C 函数提供会话分组能力,尚未封装成 OIMManager 高阶 model API。请求、返回结果和 listener 数据均为 JSON NSString;应用应使用 NSJSONSerialization 解析,不要虚构 OIMConversationGroup 类。

分组类型

枚举值数值含义
00普通自定义分组,由用户手动创建与管理。
11规则筛选分组,由服务端或 SDK 规则维护。
22全部类型,仅用于查询入参,不可用于创建分组。

普通用户分类使用 0。筛选分组的生成规则取决于当前 OpenIM 服务端部署配置。

可用操作

设置会话分组 listener

Open_im_sdkSetConversationGroupListener 只保存一个 Open_im_sdk_callbackOnConversationGroupListener。它没有公开的 remove 或 unset 函数,因此应由账号级状态层强引用并集中设置一次。

#import <OpenIMSDK/CallbackProxy.h>
@import OpenIMCore;

@interface ConversationGroupStore () <Open_im_sdk_callbackOnConversationGroupListener>
@end

@implementation ConversationGroupStore

- (void)startListening {
    Open_im_sdkSetConversationGroupListener(self);
}

- (void)onConversationGroupAdded:(NSString * _Nullable)json {
    [self mergeConversationGroupsJSON:json];
}

- (void)onConversationGroupChanged:(NSString * _Nullable)json {
    [self mergeConversationGroupsJSON:json];
}

- (void)onConversationGroupDeleted:(NSString * _Nullable)json {
    [self removeConversationGroupsJSON:json];
}

- (void)onConversationGroupMemberAdded:(NSString * _Nullable)json {
    [self mergeConversationGroupMembersJSON:json];
}

- (void)onConversationGroupMemberDeleted:(NSString * _Nullable)json {
    [self removeConversationGroupMembersJSON:json];
}

@end

新增、变更和删除事件提供分组 JSON 数组;成员变更事件提供 group、conversationIDs 和 conversations。分组以 conversationGroupID 为合并标识,分组成员关系结合 conversationGroupID 与 conversationID 合并。

切换账号时,应停止旧 listener 向界面分发,再用新账号的完整 listener 覆盖。调用成功、listener 事件到达和重新查询当前数据是三个独立阶段。