本文介绍在进入房间成功之后如何加入连麦,以及与加入连麦相关的消息通知。
说明
加入连麦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)
文档反馈