Skip to main content
SMeeting 是 SDK 的唯一对外入口。同一个 App 内只应创建一个实例并全局持有。 本页覆盖初始化、认证、会议管理、进出会议、状态查询、会中用户操作与会议外消息。媒体相关接口见 媒体控制,外设见 外设,主持人与管理接口见 会议管理

初始化

init(logLevel:)

创建 SDK 实例。

属性

version

SDK 版本号,类型 String,静态属性。

srtc

底层 RTC 实例,类型 SRTC。当会议层接口不足以满足需求时的逃生口。
请始终使用这个实例,不要自行创建第二个 SRTC —— 会议与底层共享同一个实例,另起一个会导致状态分裂、消息通道重复、设备被抢占。

delegates

事件委托集合,类型 MulticastDelegate<SMeetingDelegate>。弱引用多播,支持多个观察者。

currentUserId

当前登录用户的 ID,类型 String?,未登录时为 nil

isInRoom

当前是否在会议中,类型 Bool

cameraTrack / screenTrack / mcuTrack

本地摄像头轨道(LocalCameraTrack?)、本地屏幕共享轨道(LocalScreenTrack?)、远端合屏轨道(RemoteVideoTrack?)。未开启对应能力时为 nil

认证

login(token:)

登录会议 SDK。登录后才能调用其余接口。
返回值: 可能抛出:
  • SMeetingError.tokenInvalid —— token 格式无法解析
  • SMeetingError.tokenExpired —— token 已过期
  • SMeetingError.apiError(code:message:) —— 服务端拒绝登录
  • SMeetingError.networkError(_:)

logout()

退出登录。若仍在会议中会先自动退出会议,并停用会议外消息通道。
返回值: 无,不抛错。

会议管理(会前)

以下接口只要求已登录,不要求在会议中。

createRoom(_:)

创建会议。
返回值: (roomNo: String, meetingId: String) 可能抛出: SMeetingError.notLoggedInSMeetingError.apiError(code:message:)
不显式设置 meetingType 时按即时会议创建。

updateRoom(meetingId:req:)

修改会议(会前)。
返回值: 可能抛出: SMeetingError.notLoggedInSMeetingError.apiError(code:message:)

cancelRoom(meetingId:)

取消会议。
返回值: 可能抛出: SMeetingError.notLoggedInSMeetingError.apiError(code:message:)

detailRoom(meetingId:roomNo:)

获取会议详情,两个参数二选一。
返回值: MeetingInfo 可能抛出: SMeetingError.notLoggedInSMeetingError.apiError(code:message:)

attendeeRoom(page:)

我需要参加的会议(未开始或进行中)。
返回值: PageResult<MeetingInfo> 可能抛出: SMeetingError.notLoggedInSMeetingError.apiError(code:message:)

attendedRoom(page:)

历史会议。参数与返回值同 attendeeRoom(page:)

roomParticipant(meetingId:page:perPage:)

某场会议的参会人员记录。
返回值: PageResult<ParticipantInfo> 可能抛出: SMeetingError.notLoggedInSMeetingError.apiError(code:message:)

进入 / 退出会议

enterRoom(_:)

进入会议。
返回值: 可能抛出:
  • SMeetingError.notLoggedIn
  • SMeetingError.alreadyInMeeting —— 已经在会议中,需要先 exitRoom()
  • SMeetingError.apiError(code:message:) —— 密码错误、会议不存在、被限制入会等
  • 底层连接建立失败时抛出的错误
成功后 SDK 会自动订阅远端音频,视频按需订阅。

exitRoom()

退出当前会议,登录状态保留。
返回值: 无,不抛错。不在会议中时调用会被安全忽略。

状态查询

getRoomInfo()

返回值: RoomInfo?,未在会议中时为 nil

getWhiteBoard()

返回值: String?,当前会议的白板地址,没有时为 nil

getUserInfo(_:)

返回值: MeetingUserInfo 可能抛出: SMeetingError.notInMeetingSMeetingError.internalError(_:)(会议中没有这个成员)

getUsersInfo()

返回值: [String: MeetingUserInfo],uid 到成员的映射,未在会议中时为空字典。

getUsersInfoList()

返回值: [MeetingUserInfo],未在会议中时为空数组。

getRemoteVideoTrack(uid:desc:)

查询某位成员的某路视频轨道对象,不发起订阅 返回值: Track?,成员不存在或未发布该轨道时为 nil

会中用户操作

以下接口都要求在会议中,否则抛出 SMeetingError.notInMeeting;服务端拒绝时抛出 SMeetingError.apiError(code:message:)

updateName(_:)

修改自己的会中昵称。

sendRoomChatMessage(_:type:targetId:)

发送会中聊天消息。

sendRoomCustomMessage(_:targetId:)

发送业务自定义消息。

requestHandup(_:) / cancelHandup(_:)

举手申请与取消。

rejectOpenMic(adminUid:) / rejectOpenCamera(adminUid:)

拒绝主持人的开麦 / 开摄像头邀请。

rollCallAnswer(rollCallUserId:)

点名应答。 可能抛出: SMeetingError.notLoggedInSMeetingError.apiError(code:message:)

会议外消息

enableIm()

启用会议外消息通道。
返回值: 可能抛出: SMeetingError.notLoggedInSMeetingError.apiError(code:message:)、连接建立失败时的底层错误

disableIm()

停用会议外消息通道。
返回值: 无,不抛错。logout() 内部会自动调用。

相关页面