文档

处理申请

更新时间:

本文介绍收到申请连麦消息之后,如何同意或拒绝连麦申请以及对应的消息通知。

说明

  • 收到申请连麦消息之后,有权限的成员(老师、主播、助理等)可以选择同意或拒绝,并发出对应的消息。房间的成员会收到对应的消息,具体请看申请结果消息通知示例

申请连麦或撤销申请消息通知示例

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) {});
  }
};