监听频道状态变更
客户端可设置监听,在超级群频道发生类型变更、成员变更、频道删除等情况时收到取对应通知。
- 由于频道类型、用户是否在私有频道成员列表等差异,通知用户的范围会有差异。
- IMLib SDK 接收到频道删除(解散)、私有频道成员列表变更通知后,会根据具体变化清理本地数据。
设置频道状态变化通知
-
在 SDK 初始化后,连接 IM 成功前调用
[[RCChannelClient sharedChannelManager] setUltraGroupChannelDelegate:代理]
方法,添加频道变更代理:Objective C- (void)setUltraGroupChannelDelegate:(id<RCUltraGroupChannelDelegate>)delegate;
-
实现
RCUltraGroupChannelDelegate
协议,包括私有频道成员变更通知,频道类型变更通知,频道解散通知:Objective C/// 频道类型变更的通知
- (void)ultraGroupChannelTypeDidChanged:(NSArray<RCUltraGroupChannelChangeTypeInfo *> *)infoList;
/// 频道已删除(解散)的通知
- (void)ultraGroupChannelDidDisbanded:(NSArray<RCUltraGroupChannelDisbandedInfo *> *)infoList;
/// 私有频道用户列表变更的通知
- (void)ultraGroupChannelUserDidKicked:(NSArray<RCUltraGroupChannelUserKickedInfo *> *)infoList;
频道类型变更的通知
超级群的频道按类型区分为公有频道与私有频道。超级群频道类型变更仅可通过 App 服务端调用服务端 API 实现。IMLib SDK 不提供接口。
频道类型发生变更时,SDK 通过以下方法通知 App:
接口原型
Objective C
- (void)ultraGroupChannelTypeDidChanged:(NSArray<RCUltraGroupChannelChangeTypeInfo *> *)infoList;
参数说明
-
参数说明
返回值 返回类型 说明 infoList RCUltraGroupChannelChangeTypeInfo 频道变更信息 -
频道变更类型说明
枚举值 数值 说明 RCUltraGroupChannelChangeTypePublicToPrivate 2
超级群公有频道变成了私有频道 RCUltraGroupChannelChangeTypePrivateToPublic 3
超级群私有频道变成了公有频道 RCUltraGroupChannelChangeTypePublicToPrivateUserNotIn 6
超级群公有频道变成了私有频道,但是当前用户不在该私有频道中
提示
-
公有频道变私有频道:所有用户都会收到通知。但根据用户是否在私有频道成员列表中,收到的通知 有差异:
- 在私有频道成员列表内的用户,收到的变更类型是
RCUltraGroupChannelChangeTypePublicToPrivate
。 - 不在私有频道成员列表的用户,收到的变更类型是
RCUltraGroupChannelChangeTypePublicToPrivateUserNotIn
。
如有需要,App 可在公有频道变私有频道前,提前指定用户加入私有频道成员列表。
- 在私有频道成员列表内的用户,收到的变更类型是
-
私有频道变公有频道:仅在私有频道成员列表的用户会收到通知,变更类型为
RCUltraGroupChannelChangeTypePrivateToPublic
。
频道已删除(解散)的通知
超级群频道删除(解散)仅可通过 App 服务端调用服务端 API 实现,IMLib SDK 不提供此接口。
删除频道时,IMLib SDK 通过以下方法接收通知:
接口原型
Objective C
- (void)ultraGroupChannelDidDisbanded:(NSArray<RCUltraGroupChannelDisbandedInfo *> *)infoList;
参数说明
-
参数说明
返回值 返回类型 说明 infoList RCUltraGroupChannelDisbandedInfo 频道变更信息