处理申请
本文介绍收到申请连麦消息之后,如何同意或拒绝连麦申请以及对应的消息通知。
说明
收到申请连麦消息之后,有权限的成员(老师、主播、助理等)可以选择同意或拒绝,并发出对应的消息。房间的成员会收到对应的消息,具体请看申请结果消息通知示例。
申请连麦或撤销申请消息通知示例
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 AIRBRoomChannelMessageTypeOnReceiveRTCJoiningApplication:{
NSData *turnData = [[info valueForKey:@"data"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:turnData options:NSJSONReadingMutableLeaves error:nil];
// 自定义处理
}
break;
.....
}
}
break;
.....
}
}
Android端(Java):
// 申请连麦或撤销申请的消息
rtcService.onRtcApplyJoinChannel(ConfApplyJoinChannelEvent event);
Windows端(c++):
// 申请连麦或撤销申请的消息
// 继承RtcEventListener,并重写OnRtcApplyJoinChannel方法
virtual void OnRtcApplyJoinChannel(const ConfApplyJoinChannelEvent & event) {
};
处理连麦申请API使用示例
iOS端(Objective-C):
// 处理连麦申请(同意或拒绝)
id<AIRBRoomChannelProtocol> room = [[AIRBRoomEngine sharedInstance] getRoomChannelWithRoomID:@"xxx"]
[room.rtc approveJoiningApplication:(BOOL)approve fromPeer:(NSString*)userID]; // approve:YES表示同意,NO表示拒绝
// 处理连麦申请失败,需要监听AIRBRTCDelegate中的如下错误事件
- (void) onAIRBRTCErrorWithCode:(AIRBErrorCode)code message:(NSString*)msg{
switch (code) {
case AIRBRTCFailedToAcceptWhenCalled:
break;
.....
}
}
Android端(Java):
// 处理连麦申请(同意或拒绝)
rtcService.handleApplyJoinRtc(String userId, boolean agree, Callback<Void> callback);
/**
* 处理申请入会事件
*
* @param userId 处理的用户Id
* @param agree true: 同意入会; false: 拒绝入会;
* @param callback 回调函数
*/
// void handleApplyJoinRtc(String userId, boolean agree, Callback<Void> callback);
Windows端(c++):
// 处理连麦申请(同意或拒绝)
// 继承RtcEventListener,并重写OnRtcApplyJoinChannel方法
virtual void OnRtcApplyJoinChannel(const ConfApplyJoinChannelEvent & event) {
if(event.is_apply) {
//同意或者拒绝
bool apply = false;
std::string apply_uid = event.apply_user.user_id;
auto room_ptr = alibaba::meta_space::MetaSpace::GetInstance()->GetRoomInstance(room_id);
std::shared_ptr<IRtc> rtc_plugin = std::dynamic_pointer_cast<IRtc>(room_ptr->GetPlugin(PluginRtc));
rtc_plugin->ApproveLinkMic(apply_uid, apply, []() {},[](const DPSError& err) {});
}
};