文档

加入连麦

更新时间:

本文介绍在进入房间成功之后如何加入连麦,以及与加入连麦相关的消息通知。

说明

  • 加入连麦需要在进入房间成功之后进行。

  • 直接使用默认配置即可进行连麦,如果有需要可以在加入连麦之前修改配置

  • 加入连麦之前需要创建连麦插件,房主加入连麦会自动创建连麦插件,也可以通过服务端接口创建连麦来创建。连麦插件创建成功会有消息通知房间中的全部成员。

  • 加入连麦成功之后,会有消息通知连麦中的全部成员(包括自己)。

加入连麦API使用示例

iOS端(Objective-C):

// 加入连麦
// 旧版本中命名为joinChannelWithConfig
id<AIRBRoomChannelProtocol> room = [[AIRBRoomEngine sharedInstance] getRoomChannelWithRoomID:@"xxx"]
[room.rtc joinChannel];

// 连麦成功,需要通过实现AIRBRTCProtocol的AIRBRTCDelegate中的如下方法和事件来通知,
- (void) onAIRBRTCEvent:(AIRBRTCEvent)event info:(NSDictionary*)info{
    switch (event) {
        case AIRBRTCEventJoinSucceeded:
        break;
        .....
    }
}

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

Android端(Java):

// 加入连麦
rtcService.joinRtc();
rtcService.joinRtcWithConfig(new RtcStreamConfig(width, height), nick);

// 通过调用RtcService.addEventHandler添加的事件监听器的回调触发来判断操作状态
rtc.addEventHandler(new SampleRtcEventHandler(){...});

// 连麦成功
new SampleRtcEventHandler(){
    @Override
    public void onRtcJoinRtcSuccess(View view) {

    }
}

// 连麦失败
new SampleRtcEventHandler(){
    @Override
    public void onRtcJoinRtcError(String event) {

    }
}

Web端(JavaScript):

// nick为用户昵称,resolution为指定的摄像头分辨率信息,可以通过api获取
// resolution数据结构为:{ rameRate: number; width: number, height:number; }
rtcService.joinChannel(nick, resolution).then(() => {
  // 连麦成功
}).catch(err => {
  // 连麦失败
})

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));
rtc_plugin->JoinRtc("nick", []() { 

},
 [](const DPSError& err) {
});

加入连麦相关消息通知示例

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 AIRBRoomChannelMessageTypeRTCStarted:
                break;
                .....
            }
        }
        break;
        .....
    }
}

// 有人加入连麦的消息,需要通过实现AIRBRoomChannelProtocol的AIRBRoomChannelDelegate中的如下方法和事件来通知,
- (void) onAIRBRoomChannelEvent:(AIRBRoomChannelEvent) event info:(NSDictionary*)info{
    switch (event) {
        case AIRBRoomChannelEventMessageReceived:{
            AIRBRoomChannelMessageType messageType = [[info valueForKey:@"type"] integerValue];
            switch (messageType) {
                case AIRBRoomChannelMessageTypePeerJoinRTCSucceeded:
                break;
                .....
            }
        }
        break;
        .....
    }
}

Android端(Java):

// 通过调用RtcService.addEventHandler添加的事件监听器的回调触发来判断操作状态
rtc.addEventHandler(new SampleRtcEventHandler(){
    @Override
    public void onRtcStart(ConfEvent confStartEvent) {
        // 连麦插件创建的消息
    }
    @Override
    public void onRtcRemoteJoinSuccess(ConfUserEvent event) {
        // 有人加入连麦的消息
    }
});

Web端(JavaScript):

// 获取事件列表
const { EventNameEnum } = window.RoomPaasSdk
// 连麦插件创建的消息
chatService.on(EventNameEnum.PaaSRtcConfStart, (event) => {
  // 用于更新confId 
  console.log(event)
})
// 有人加入连麦的消息
chatService.on(EventNameEnum.onJoin, (event) => {
  console.log(event)
})

Windows端(c++):

//继承RtcEventListener,并重写OnRtcJoinRtcSuccess、OnRtcJoinRtcFail方法
virtual void OnRtcJoinRtcSuccess() override {

}
virtual void OnRtcJoinRtcFail(const ::alibaba::dps::DPSError & error) override {

}
  • 本页导读 (1)
文档反馈