麦位管理

更新时间: 2025/03/04 10:51:28

NERoom 的麦位管理功能包括:上麦、下麦、抱麦、踢麦等。在语聊房、 K 歌、直播等场景中,主播和观众连麦是非常热门的玩法。通过多人实时互动,可以活跃房间氛围、激发观众参与热情,进而提升产品活跃度。

注意事项

  • 您可以在创建房间时,设置麦位相关的初始化配置,包括麦位数量和麦位申请审批模式,具体请参见 创建房间
  • 目前只支持在创建房间时设置麦位数量,麦位数量最大为 20,在房间正常使用过程中无法修改麦位数量。

添加麦位事件监听

主播和观众进入房间后,调用 addSeatListener 接口,监听麦位相关的事件。

示例代码如下:

Objective-C[self.context.seatController addSeatListener:self];

主播邀请观众上麦(抱麦)

API 调用时序

sequenceDiagram

actor hostClientA as 主播A client
participant NERoom as NERoom
actor audienceB as 观众 B client

note over NERoom : 抱观众上麦
hostClientA ->> NERoom : 邀请上麦<br>sendSeatInvitation
NERoom ->> audienceB : 自动同意上麦&麦位变更的回调<br>onSeatInvitationAccepted&onSeatListChanged
NERoom -> hostClientA : 自动同意上麦&麦位变更的回调<br>onSeatInvitationAccepted&onSeatListChanged
audienceB ->audienceB : 刷新 UI
hostClientA ->hostClientA : 刷新 UI

实现方法

  1. 主播调用 sendSeatInvitation 接口邀请观众上麦。

    参数 类型 描述
    seatIndex Integer 麦位位置。
    麦位的最大数量可以在 创建房间 时设置。
    user String 待邀请的观众的用户 ID。
  2. (可选)观众调用 acceptSeatInvitation 接口同意上麦邀请,或调用 rejectSeatInvitation 接口拒绝上麦邀请。

    • 若在创建房间时设置了需要观众同意上麦:观众需要执行该操作。
    • 若在创建房间时设置了观众自动同意上麦:观众无需执行该操作。
  3. 触发同意上麦的回调 onSeatInvitationAccepted 和麦位变更的回调 onSeatListChanged

  4. 房间内所有成员收到 onSeatListChanged 回调后,刷新麦位展示的 UI。

示例代码

主播邀请观众上麦的示例代码如下:

Objective-C[self.context.seatController
sendSeatInvitation:userId
            callback:^(NSInteger code, NSString *_Nullable msg, id _Nullable objc) {
            }];

主播邀请观众上麦时指定麦位的示例代码如下:

Objective-C[self.context.seatController
sendSeatInvitation:self.index
                user:self.userId
            callback:^(NSInteger code, NSString *_Nullable msg, id _Nullable obj) {

            }];

观众申请上麦

API 调用时序

sequenceDiagram

actor hostClientA as 主播 A client
participant NERoom as NERoom
actor audienceB as 观众 B client

note over NERoom : 观众申请上麦
audienceB ->> NERoom : 申请上麦<br>submitSeatRequest
NERoom ->> hostClientA : 观众 B 申请上麦的回调onSeatRequestSubmitted
NERoom ->> audienceB : 观众 B 申请上麦的回调onSeatRequestSubmitted
audienceB ->> audienceB : 刷新 UI
hostClientA ->> hostClientA : 刷新 UI

alt 主播同意上麦申请
hostClientA ->> NERoom : 主播同意上麦申请<br>approveSeatRequest
NERoom ->> hostClientA : 主播主播同意上麦申请&麦位变更的回调<br>onSeatRequestApproved&onSeatListChanged
NERoom ->> audienceB : 主播同意上麦申请&麦位变更的回调<br>onSeatRequestApproved&onSeatListChanged
audienceB ->> audienceB : 刷新 UI
hostClientA ->> hostClientA : 刷新 UI

else 主播拒绝上麦申请
hostClientA ->> NERoom : 主播不同意上麦申请<br>rejectRequestSeat
NERoom ->> hostClientA : 主播拒绝观众 B 上麦的回调<br>bronSeatRequestRejected
NERoom ->> audienceB : 主播拒绝观众 B 上麦的回调<br>onSeatRequestRejected
audienceB ->> audienceB : 刷新 UI
hostClientA ->> hostClientA : 刷新 UI
end

实现方法

  1. 观众 B 调用 submitSeatRequest 接口申请上麦。

    参数 类型 描述
    seatIndex Integer 指定上麦后的麦位位置。该参数为可选,如果不传该参数,则自动占用当前空的麦位中的第一个。
    麦位的最大数量可以在创建房间时设置。
  2. 主播收到观众 B 申请上麦的回调 onSeatRequestSubmitted

  3. 主播同意或拒绝观众 B 上麦。

    参数 类型 描述
    user String 申请上麦的观众的用户 ID。
  4. 观众 B 收到主播同意上麦申请的回调 onSeatRequestApproved 或主播拒绝上麦申请的回调 onSeatRequestRejected

示例代码

Objective-C//观众申请上麦时不指定麦位
[self.context.seatController
submitSeatRequest:^(NSInteger code, NSString *_Nullable msg, id _Nullable objc) {

}];

//观众申请上麦时指定麦位
[self.context.seatController
    submitSeatRequest:index
                callback:^(NSInteger code, NSString *_Nullable msg, id _Nullable obj) {

                }];

//主播同意上麦申请
[self.context.seatController
    approveSeatRequest:userId
              callback:^(NSInteger code, NSString *_Nullable msg, id _Nullable objc) {

              }];


// 主播拒绝上麦申请

[self.context.seatController
    rejectSeatRequest:self.userId
              callback:^(NSInteger code, NSString *_Nullable msg, id _Nullable objc) {

              }];

主播将观众移出麦位(踢麦)

API 调用时序

sequenceDiagram

actor hostClientA as 主播 A client
participant NERoom as NERoom
actor audienceB as 观众 B client

note over NERoom : 将观众移出麦位
hostClientA ->> NERoom : 主播踢观众 B 下麦<br>kickSeat
NERoom ->> audienceB : 主播踢观众 B 下麦&麦位变更的回调<br>onSeatKicked&onSeatListChanged
NERoom ->> hostClientA : 主播踢观众 B 下麦&麦位变更的回调<br>onSeatKicked&onSeatListChanged
audienceB ->> audienceB : 刷新 UI
hostClientA ->> hostClientA : 刷新 UI

实现方法

  1. 主播调用 kickSeat 接口将观众移出麦位。

    参数 类型 描述
    user String 待移出麦位的观众的用户 ID。
  2. 房间内所有成员会收到主播将观众移出麦位的回调 onSeatKicked 和麦位变更的回调 onSeatListChanged

示例代码

Objective-C[self.context.seatController
    kickSeat:userId
    callback:^(NSInteger code, NSString *_Nullable msg, id _Nullable objc) {

    }];

观众取消申请上麦

API 调用时序

sequenceDiagram

actor hostClientA as 主播 A client
participant NERoom as NERoom
actor audienceB as 观众 B client

note over NERoom : 观众取消申请上麦
audienceB ->> NERoom : 取消申请上麦<br>cancelSeatRequest
NERoom ->> hostClientA : 观众 B 取消上麦的回调<br>onSeatRequestCancelled
NERoom ->> audienceB : 观众 B 取消上麦的回调<br>onSeatRequestCancelled

audienceB ->> audienceB : 刷新 UI
hostClientA ->>hostClientA : 刷新 UI

实现方法

  1. 观众调用 cancelSeatRequest 接口取消申请上麦。

  2. 取消申请上麦后,主播收到观众取消上麦的回调 onSeatRequestCancelled 和麦位变更的回调 onSeatListChanged

示例代码

Objective-C[self.context.seatController
    cancelSeatRequest:^(NSInteger code, NSString *_Nullable msg, id _Nullable objc) {

    }];

观众主动下麦

API 调用时序

sequenceDiagram

actor hostClientA as 主播 A client
participant NERoom as NERoom
actor audienceB as 观众 B client

note over NERoom : 观众主动下麦
audienceB ->> NERoom : 下麦<br>leaveSeat
NERoom ->> hostClientA : 观众 B 成功下麦&麦位变更的回调<br>onSeatLeave&麦位变更的回调onSeatListChanged
NERoom ->> audienceB : 观众 B 成功下麦&麦位变更的回调<br>onSeatLeave&麦位变更的回调onSeatListChanged

audienceB ->audienceB : 刷新 UI
hostClientA ->hostClientA : 刷新 UI

实现方法

  1. 观众调用 leaveSeat 接口下麦。

  2. 下麦成功后,房间内所有成员收到观众成功下麦的回调 onSeatLeave 和麦位变更的回调 onSeatListChanged

示例代码

Objective-C[self.context.seatController leaveSeat:^(NSInteger code, NSString *_Nullable msg,
                                          id _Nullable objc) {

}];
此文档是否对你有帮助?
有帮助
去反馈
  • 注意事项
  • 添加麦位事件监听
  • 主播邀请观众上麦(抱麦)
  • API 调用时序
  • 实现方法
  • 示例代码
  • 观众申请上麦
  • API 调用时序
  • 实现方法
  • 示例代码
  • 主播将观众移出麦位(踢麦)
  • API 调用时序
  • 实现方法
  • 示例代码
  • 观众取消申请上麦
  • API 调用时序
  • 实现方法
  • 示例代码
  • 观众主动下麦
  • API 调用时序
  • 实现方法
  • 示例代码