跳到主要内容

监听用户组状态变更

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 参数说明

参数类型说明
infoIUserGroupStatusInfo超级群用户组状态数据

关于更新 UI 的提示

考虑到同一用户既在私有频道成员列表中,又在私有频道绑定的(多个)用户组中,App 可以在收到回调时向 App 自身业务服务端查询当前用户是否仍可继续访问该私有频道,并根据该结果刷新 UI。

对于未在通知范围内的用户,可以在用户进入相应页面时向 App 自身业务服务端查询数据,并决定是否需要刷新 UI。