监听用户组状态变更
SDK 从 5.7.3 版本开始支持超级群用户组功能。
客户端可设置监听,在超级群用户组发生变更时收到取对应通知。
客户端 SDK 针对以下操作提供回调。回调的通知范围与回调数据有差异具体如下:
- 用户加入用户组:被加入用户组的用户可收到通知,通知中携带超级群 ID、用户组 ID。
- 用户被移出用户组:被移出的用户可收到通知,通知中携带超级群 ID、用户组 ID。
- 频道与用户组绑定:用户组下所有用户均可收到通知,通知中携带超级群 ID、频道 ID、频道类型、用户组 ID。
- 频道与用户组解除绑定:用户组下所有用户均可收到通知,通知中携带超级群 ID、频道 ID、频道类型、用户组 ID。
- 删除用户组:用户组下所有用户均可收到通知,通知中携带超级群 ID、用户组 ID。
监听超级群用户组状态变更通知
可通过监听 Events.USER_GROUP_STATUS
事件来捕获超级群用户组状态变更的通知。
RongIMLib.addEventListener(RongIMLib.Events.USER_GROUP_STATUS, (info) => {
const { userGroupDisband, userAdded, userRemoved, userGroupBindChannel, userGroupUnBindChannel } = info
if (userGroupDisband) {
// 用户组解散
// 需要将符合条件的用户从符合条件的频道中移除。
// 轮询判断该用户组内的每个用户:
// 1、是否还在该用户组绑定的某个频道中。
// 2、是否还在该用户组绑定的某个频道的其它用户组中。
// 若结果均为否,则可以移除。(解除该用户组下成员的绑定关系。解除该用户组与频道的绑定关系)
}
if (userAdded) {
// 用户被加入用户组
// 该用户组绑定的每个私有频道对该用户显示会话入口。
// 并支持在该部分私有频道进行消息的收发、未读消息的展示等
}
if (userRemoved) {
// 用户被从用户组中移除
// 需要将用户从符合条件的频道中移除。
// 轮询判断该用户:
// 1、是否还在该用户组绑定的每个频道中。
// 2、是否还在该用户组绑定的每个频道的其它用户组中。
// 若结果均为否,则可以移除。(解除用户同该用户组之间的绑定关系。如该用户组绑定了私有频道,则该用户无法在私有频道中收发消息,获取历史消息内容。)
}
if (userGroupBindChannel) {
// 用户组绑定频道
// 需要针对该用户组内的用户显示该频道入口。
// 并支持在该部分私有频道进行消息的收发、未读消息的展示等
}
if (userGroupUnBindChannel) {
// 用户组解绑频道
// 需要针对该用户组内符合条件的用户隐藏该频道入口。
// 轮询判断该用户组内的每个用户:
// 1、是否还在该频道中。
// 2、是否还在该频道的其它用户组中。
// 若结果均为否,则可以隐藏。
}
})
info 参数说明
参数 | 类型 | 说明 |
---|---|---|
info | IUserGroupStatusInfo | 超级群用户组状态数据 |
-
IUserGroupStatusInfo:
参数 类型 说明 userGroupDisband IUserGroupChangeData 用户组解散信息 userAdded IUserGroupChangeData 用户被加入用户组信息 userRemoved IUserGroupChangeData 用户被从用户组中移除信息 userGroupBindChannel IChannelAndUserGroupChangeData 用户组绑定频道信息 userGroupUnBindChannel IChannelAndUserGroupChangeData 用户组解绑频道信息
关于更新 UI 的提示
考虑到同一用户既在私有频道成员列表中,又在私有频道绑定的(多个)用户组中,App 可以在收到回调时向 App 自身业务服务端查询当前用户是否仍可继续访问该私有频道,并根据该结果刷新 UI。
对于未在通知范围内的用户,可以在用户进入相应页面时向 App 自身业务服务端查询数据,并决定是否需要刷新 UI。