跳到主要内容
版本:1.0.0

3、房间内状态维护

有用户加入房间后,会生成一个Participant对象,因此如果需要知道成员Participant的状态变化,就需要监听Participant相关的事件:

  • 这些事件在成员状态变化后才通知,可用于在UI中显示。
  • 成员Participant相关的事件通知基本都有共同的返回值RoomParticipantInfo,用来表示成员所在的房间号及成员标识。
参数名数据类型属性说明
RoomIdstring成员所在的房间Id
ParticipantIdentitystring状态发生变化的成员标识

房间中成员状态通知事件

客户端需要在应用测维护成员列表,并根据状态变化显示相应的UI

操作与相应接口

操作相应接口
房间中成员进入房间 OnParticipantAddEvent(RoomParticipantInfo info)
房间中成员退出房间OnParticipantLeaveEvent(RoomParticipantInfo info)
房间中本地音频流是否开启OnLocalAudioChanged(string roomId, bool isEnable)
房间中成员音频track发布/取消OnParticipantAudioChanged(RoomParticipantInfo info, RemoteAudioTrack track, bool isPublished)
房间中成员音频Mute状态更新OnParticipantAudioMuteUpdated(RoomParticipantInfo info, bool isMuted)
房间内成员说话状态OnParticipantAudioSpeakingChanged(RoomParticipantInfo info, bool isSpeaking)

代码示例

// 房间内成员加入通知
LiveService.Instance.OnParticipantAddEvent += OnAdded;
// 房间内成员离开通知
LiveService.Instance.OnParticipantLeaveEvent += OnLeaved;

// 客户端可根据此状态在UI显示成员说话状态
LiveService.Instance.OnLocalAudioChanged += OnLocalAudioStateChanged;
LiveService.Instance.OnParticipantAudioSpeakingChanged += OnParticipantSpeakingChanged;

// 房间内成员音频是否发布
LiveService.Instance.OnParticipantAudioChanged += OnAudioSubChanged;
// 房间内成员是否mute
LiveService.Instance.OnParticipantAudioMuteUpdated += OnAudioMuteChanged;

房间中禁言成员

如果想对房间内某个单独的成员禁言,可通过调用语音接口相应的函数 如果想一次性禁言房间内所有成员,可以调用本函数 EnableAllParticipants:

//  enable true|false 对应 解禁|禁言状态
void EnableAllParticipants(bool enable)

// 获取房间管理类
var roomManager = LiveService.GetRoom(roomId)
// 对房间内所有其他成员设置禁言状态
roomManager.EnableAllParticipants(false)