SMeetingEngine.
Error conventions
The APIs on this page follow two shared rules for throwing errors, which aren’t repeated for each API below:
When the server rejects a request, the SDK always throws
SMeetingError.apiError(code:message:), where code and message come from the server. APIs with the admin prefix require the host (.host) or co-host (.coHost) role; regular members who call them get a permission error in the form of apiError.
APIs that return a value throw a decoding error when the data returned by the server can’t be parsed.
Room controls
The following APIs all require being in a meeting, and none of them return a value.adminDestroyRoom()
Ends the entire meeting; all members are disconnected.
adminUpdateRoomMicState(selfUnmuteMicDisabled:micDisabled:)
Sets mute all for the room.
adminUpdateRoomCameraState(selfUnmuteCameraDisabled:cameraDisabled:)
Sets camera off for everyone for the room.
adminUpdateRoomShareState(shareDisabled:)
adminUpdateRoomChatDisabled(_:)
adminUpdateRoomScreenshotDisabled(_:)
adminUpdateRoomWatermarkDisabled(_:)
adminUpdateRoomLocked(_:)
adminUpdateEnterBeforeHostDisabled(_:)
adminStopRoomShare()
Forcibly ends the sharing currently in progress.
Member management
The following APIs all require being in a meeting, and none of them return a value.adminUpdateUserName(targetId:nickname:)
adminUpdateUserRole(targetId:role:)
adminUpdateUserChatDisabled(targetId:chatDisabled:)
adminUpdateUserDrawDisabled(targetId:drawDisable:)
Read the current state from
MeetingUserInfo.drawDisabled; when it changes, all members receive meeting(_:userDrawDisabledDidChange:) (available since 1.3.6).
adminMoveHost(targetId:)
Transfers the host role.
adminRequestUserOpenMic(targetId:) / adminRequestUserOpenCamera(targetId:)
Asks a member to turn on their microphone / camera.
adminCloseUserMic(targetId:) / adminCloseUserCamera(targetId:)
Turns off a member’s microphone / camera directly.
adminKickUserOut(targetId:joinDisabled:)
adminConfirmHandup(targetId:approve:code:)
Approves or rejects a raise-hand request.
Invitees and devices
adminUpdateConferee(meetingId:conferee:)
Updates the invitee list. Requires being logged in.
Returns: None
adminCallUsers(conferee:)
Calls people during the meeting. Requires being in a meeting.
Returns: None
meetNotEnter()
Queries the invitees who haven’t entered the meeting yet. Requires being in a meeting.
Returns: [NoEnterUserInfo]
adminMeetRemind(uids:useSms:)
Reminds people to enter the meeting. Requires being in a meeting.
Returns: None
adminListOnlineMember(page:perPage:)
Lists online members. Requires being in a meeting.
Returns:
PageResult<OnlineMemberInfo>
agentList(type:name:page:perPage:)
Lists the devices that can be invited. Requires being logged in.
Returns:
PageResult<AgentInfo>
adminInviteAgent(agents:no:)
Invites devices to the meeting. Requires being logged in.
Returns: None
Waiting room
adminUpdateWaitingRoomDisabled(_:)
Requires being in a meeting.
Returns: None
adminWaitingRoomUsers()
Requires being in a meeting.
Returns: [WaitingRoomUserInfo]
adminMoveInWaitingRoom(userId:nickname:)
Moves a member in the meeting back to the waiting room. Requires being in a meeting.
Returns: None
adminMoveOutWaitingRoom(userId:nickname:)
Admits a member from the waiting room into the meeting. Omit both parameters to admit everyone. Requires being in a meeting.
Returns: None
exitWaitingRoom(meetingId:roomNo:)
The member exits the waiting room on their own; provide either of the two parameters. Requires being logged in.
Returns: None
Sub-meetings
Except foruserHelpSubMeeting(), the following APIs only require being logged in.
adminCreateSubMeeting(mainMeetingId:titles:)
Returns: None
adminSubMeetingList(mainMeetingId:)
Returns:
[SubMeetingInfo]
adminUpdateSubMeetingTitle(id:title:)
Returns: None
adminUpdateSubMeetingUsers(id:users:)
Returns: None
adminDeleteSubMeeting(ids:)
Returns: None
adminStartSubMeeting(ids:) / adminStopSubMeeting(ids:)
Returns: None
adminMoveSubMeetingUser(fromId:toId:userId:)
Returns: None
userHelpSubMeeting()
A member in a sub-meeting asks the main meeting for help. Requires being in a meeting.
Returns: None
Layout and recording
adminUpdateLayout(_:)
Updates the layout of a composite meeting. Requires being in a meeting.
Returns: None
mcuStart(meetingId:req:)
Starts a recording / stream mixing task. Requires being logged in.
Returns: None
mcuStop(meetingId:taskType:)
Requires being logged in.
Returns: None
mcuRecordConfig()
Requires being logged in.
Returns: McuRecordConfig
mcuRecordDetail(meetingId:)
Requires being logged in.
Returns:
McuRecordDetail
Resources
The following APIs all only require being logged in.presignedPutObject(type:meetingId:ext:)
Gets an upload URL.
Returns:
(url: String, key: String, ext: String)
presignedGetObject(id:resKey:)
Gets a download URL; provide either of the two parameters.
Returns:
String (a signed download URL)
resourcesList(req:)
Returns:
PageResult<ResourceInfo>
resourcesCreate(req:)
Registers a resource.
Returns: None
Sign-in
The following APIs all require being in a meeting and act on the current meeting.signInCreate(dur:desc:)
Starts a round of sign-in.
Returns: None
signInFinish()
Ends the current round of sign-in early.
Returns: None
signInSign()
The member signs in.
Returns: None
signInList()
Returns: (list: [SignInfo]?, now: Int), where now is the server’s current time
signInCount(epoch:)
Returns:
Int (the number of members who have signed in)
signInDetail(epoch:nickname:)
Returns:
[SignDetailInfo]