3、房间内状态维护
有用户加入房间后,会生成一个Participant对象,因此如果需要知道成员Participant的状态变化,就需要监听Participant
相关的事件:
- 这些事件在成员状态变化后才通知,可用于在UI中显示。
- 成员Participant相关的事件通知基本都有共同的返回值
RoomParticipantInfo
,用来表示成员所在的房间号及成员标识。
参数名 | 数据类型 | 属性说明 |
---|---|---|
RoomId | string | 成员所在的房间Id |
ParticipantIdentity | string | 状态发生变化的成员标识 |
房间中成员状态通知事件
客户端需要在应用测维护成员列表,并根据状态变化显示相应的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
:
接口原型
void EnableAllParticipants(bool enable)
参数名 | 数据类型 | 属性说明 |
---|---|---|
enable | bool | 如果需要禁言房间内所有成员,则传入的参数为 false,如果解禁房间内所有成员,则参数为 true |
代码示例
// 获取房间管理类
var roomManager = LiveService.Instance.GetRoom(roomId)
// 对房间内所有其他成员设置禁言状态
roomManager.EnableAllParticipants(false)