踢出连麦

本文介绍如何将某个成员踢出连麦,以及收到踢出连麦消息之后如何处理。

说明

  • 踢出连麦的实现分为两个部分,第一,踢人发起方发出踢出连麦消息,连麦中的成员会收到消息;第二,被踢方收到消息,并且其中的被踢出的用户ID与自己的相同,主动进行退出连麦

  • 踢出连麦接口同时也是撤销连麦邀请接口,在收到该接口的消息时,如果被踢出的用户ID与自己的相同,应当根据自己的状态进行处理,如果是在连麦中则退出连麦,如果是未连麦则表示邀请方撤销了连麦邀请。

踢出连麦API使用示例

iOS端(Objective-C):

// 踢出连麦
id<AIRBRoomChannelProtocol> room = [[AIRBRoomEngine sharedInstance] getRoomChannelWithRoomID:@"xxx"]
[room.rtc removePeers:(NSArray<NSString*>*)userIDs];

// 踢出连麦失败,需要监听AIRBRTCDelegate中的如下错误事件
- (void) onAIRBRTCErrorWithCode:(AIRBErrorCode)code message:(NSString*)msg{
    switch (code) {
        case AIRBRTCFailedToRemovePeers:
        break;
        .....
    }
}

Android端(Java):

// 踢出连麦,callback中有操作状态标识
rtcService.kickUserFromRtc(List<String> userIds, Callback<Void> callback);

Windows端(c++):

// 踢出连麦
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->KickUserFromRtc({uid}, []() {},[](const DPSError& err) {});

踢出连麦消息通知示例

收到此消息,如果被踢出的用户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 AIRBRoomChannelMessageTypePeerKickedFromRTC:{
                    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 onRtcKickUser(ConfUserEvent event) {
        // 踢出连麦的消息
    }
});

Windows端(c++):

// 踢出连麦的消息
// 继承RtcEventListener,并重写OnRtcKickUser方法
virtual void OnRtcKickUser(const ConfUserEvent& event) {

};