监听用户组状态变更
SDK 从 5.4.0 版本开始支持超级群用户组功能。
客户端可设置监听,在超级群用户组发生变更时收到取对应通知。
客户端 SDK 针对以下操作提供回调。回调的通知范围与回调数据有差异具体如下:
- 用户加入用户 组:被加入用户组的用户可收到通知,通知中携带超级群 ID、用户组 ID。
- 用户被移出用户组:被移出的用户可收到通知,通知中携带超级群 ID、用户组 ID。
- 频道与用户组绑定:用户组下所有用户均可收到通知,通知中携带超级群 ID、频道 ID、频道类型、用户组 ID。
- 频道与用户组解除绑定:用户组下所有用户均可收到通知,通知中携带超级群 ID、频道 ID、频道类型、用户组 ID。
- 删除用户组:用户组下所有用户均可收到通知,通知中携带超级群 ID、用户组 ID。
创建用户组时,SDK 不会收到回调。
监听用户组变更通知
SDK 在 RCUserGroupStatusDelegate
协议中提供了与用户组变更相关的回调方法。您可以从返回的 RCConversationIdentifier
中获取超级群 ID(targetId
)数据,从返回的 RCChannelIdentifier
中获取超级群 ID(targetId
)和频道 ID(channelId
)数据。
@protocol RCUserGroupStatusDelegate <NSObject>
/*!
当前用户收到超级群下的用户组中解散通知
@param identifier 会话标识[identifier.type:ConversationType_ULTRAGROUP ]
@param userGroupIds 用户组ID列表
@discussion
@warning
@since
*/
- (void)userGroupDisbandFrom:(RCConversationIdentifier *)identifier
userGroupIds:(NSArray<NSString *> *)userGroupIds;
/*!
当前用户被添加到超级群下的用户组
@param identifier 会话标识[identifier.type:ConversationType_ULTRAGROUP ]
@param userGroupIds 用户组ID列表
@discussion
@warning
@since
*/
- (void)userAddedTo:(RCConversationIdentifier *)identifier
userGroupIds:(NSArray<NSString *> *)userGroupIds;
/*!
当前用户从到超级群下的用户组中被移除
@param identifier 会话标识
@param userGroupIds 用户组ID列表
@discussion
@warning
@since
*/
- (void)userRemovedFrom:(RCConversationIdentifier *)identifier
userGroupIds:(NSArray<NSString *> *)userGroupId;
/*!
频道中绑定用户组回调
@param identifier 频道标识
@param channelType 频道类型
@param userGroupIds 用户组ID列表
@discussion
@warning
@since
*/
- (void)userGroupBindTo:(RCChannelIdentifier *)identifier
channelType:(RCUltraGroupChannelType)channelType
userGroupIds:(NSArray<NSString *> *)userGroupIds;
/*!
频道解绑用户组回调
@param identifier 频道标识
@param channelType 频道类型
@param userGroupIds 用户组ID列表
@discussion
@warning
@since
*/
- (void)userGroupUnbindFrom:(RCChannelIdentifier *)identifier
channelType:(RCUltraGroupChannelType)channelType
userGroupIds:(NSArray<NSString *> *)userGroupIds;
@end
App 可通过以下方法添加 频道变更代理:
[[RCChannelClient sharedChannelManager] setUserGroupStatusDelegate:self];
关于更新 UI 的提示
考虑到同一用户既在私有频道成员列表中,又在私有频道绑定的(多个)用户组中,App 可以在收到回调时向 App 自身业务服务端查询当前 用户是否仍可继续访问该私有频道,并根据该结果刷新 UI。
对于未在通知范围内的用户,可以在用户进入相应页面时向 App 自身业务服务端查询数据,并决定是否需要刷新 UI。