静音某个成员
本文介绍如何实现静音某个成员,包括房主和被静音的成员的操作和处理。
说明
静音某个成员API使用示例
iOS端(Objective-C):
// 静音/取消静音某个成员
id<AIRBRoomChannelProtocol> room = [[AIRBRoomEngine sharedInstance] getRoomChannelWithRoomID:@"xxx"]
[room.rtc muteRemoteMicphone:(BOOL)mute remotePeer:(NSString*)userID
onSuccess:(void(^)(void))onSuccess
onFailure:(void(^)(NSString* errorMessage))onFailure];
Android端(Java):
// 静音/取消静音某个成员
rtcService.muteRemoteAudioPlaying(String uid, boolean mute);
Windows端(c++):
// 静音/取消静音某个成员
auto room_ptr = alibaba::meta_space::MetaSpace::GetInstance()->GetRoomInstance(room_id);
auto rtc_plugin = std::dynamic_pointer_cast<IRtc>(room_ptr->GetPlugin(PluginRtc));
//静音或者非静音
std::string uid;
bool mute = true;
rtc_plugin->MuteUser(uid, mute, [](){}, [](const ::alibaba::dps::DPSError & error_msg){});
静音消息通知示例
收到此消息,如果被静音操作的用户ID与自己的相同,并且状态为被静音,则主动调用关闭麦克风,并且禁止开关麦克风操作。
iOS端(Objective-C):
// 静音消息,需要通过实现AIRBRoomChannelProtocol的AIRBRoomChannelDelegate中的如下方法和事件来通知,
- (void) onAIRBRoomChannelEvent:(AIRBRoomChannelEvent) event info:(NSDictionary*)info{
switch (event) {
case AIRBRoomChannelEventMessageReceived:{
AIRBRoomChannelMessageType messageType = [[info valueForKey:@"type"] integerValue];
switch (messageType) {
case AIRBRoomChannelMessageTypeOnMicphoneMuted:{
NSData *turnData = [[info valueForKey:@"data"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:turnData options:NSJSONReadingMutableLeaves error:nil];
// 自定义处理,如果被静音的用户ID与自己的相同,并且状态为被静音,则主动调用关闭麦克风
}
break;
.....
}
}
break;
.....
}
}
Android端(Java):
// 通过调用RtcService.addEventHandler添加的事件监听器的回调触发来判断操作状态
rtc.addEventHandler(new SampleRtcEventHandler(){
@Override
public void onRtcUserAudioMuted(String uid) {
// 静音消息
}
});
Windows端(c++):
// 静音消息
// 继承RtcEventListener,并重写OnRtcMuteMessage方法
virtual void OnRtcMuteMessage(const MuteMessageEvent & event) {
};