createGameRoom method
@detail api
@author luomingkang
@brief 创建游戏语音房间实例。
调用此方法仅返回一个房间实例,你仍需调用 joinRoom{@link #IGameRoom#joinRoom} 才能真正地创建/加入房间。
多次调用此方法以创建多个 IGameRoom{@link #IGameRoom} 实例。分别调用各 RTCRoom 实例中的 joinRoom{@link #IGameRoom#joinRoom} 方法,同时加入多个房间。
多房间模式下,用户可以同时订阅各房间的音视频流。
@param roomId 标识通话房间的房间 ID。该字符串符合正则表达式:[a-zA-Z0-9_\@\\-\\.]{1,128}。
@param config 游戏语音房间配置。参看 GameRoomConfig{@link #GameRoomConfig}。
@return 创建的 IGameRoom{@link #IGameRoom} 房间实例。
返回 NULL 时,请确认指定房间是否已经存在或 roomId 格式错误。
@note
- 如果需要加入的房间已存在,你仍需先调用本方法来获取 IGameRoom实例,再调用 joinRoom{@link #IGameRoom#joinRoom} 加入房间。
- 请勿使用同样的 roomId 创建多个房间,否则后创建的房间实例会替换先创建的房间实例。
- 如果你需要在多个房间发布音视频流,无须创建多房间,直接调用 startForwardStreamToRooms{@link #RTCRoom#startForwardStreamToRooms} 开始跨房间转发媒体流。
Implementation
Future<IGameRoom?> createGameRoom(
string roomId, GameRoomConfig config) async {
$a() async => packObject(
await ($instance as $p_a.RTCEngine)
.createGameRoom(roomId, unpackObject<$p_a.GameRoomConfig>(config)),
() => IGameRoom());
$i() async => packObject(
await ($instance as $p_i.ByteRTCEngine)
.createGameRoom(roomId, unpackObject<$p_i.GameRoomConfig>(config)),
() => IGameRoom());
if (Platform.isAndroid) {
return $a();
} else if (Platform.isIOS) {
return $i();
} else {
throw UnsupportedError(
'Not Support Platform ${Platform.operatingSystem}');
}
}