房间管理
房间表示一个多人的音视频会话,本部分介绍如何加入/退出房间,获取房间信息、如何使用踢人等常见功能。
加入房间
通过调用如下接口:
- (void)joinRoomWithToken:(NSString *)token;
加入房间。此处 token
需要 App 从 App Server 中获取,App Server 如何生成 token 此处可查阅RoomToken 的计算。
如果加入房间时需要携带自定义的信息给到房间中的其它用户,可以通过如下接口:
- (void)joinRoomWithToken:(NSString *)token
userData:(NSString *)userData;
加入房间,并将自定义的信息传给 userData
参数。
本地用户加入房间成功后,远端用户会收到该用户加入房间成功的回调,回调中的 userId
即为该用户的 userId,userData
则为其传入的自定义的信息。
- (void)RTCEngine:(QNRTCEngine *)engine didJoinOfRemoteUserId:(NSString *)userId userData:(NSString *)userData;
房间状态回调
当设置了 QNRTCEngine
的 delegate
属性后,房间状态变更时便会给相应的代理回调如下通知:
- (void)RTCEngine:(QNRTCEngine *)engine roomStateDidChange:(QNRoomState)roomState;
房间状态变更的逻辑如下:
- 未加入房间或者退出房间后状态为:
QNRoomStateIdle
- 正在加入房间时状态为:
QNRoomStateConnecting
- 加入房间成功后状态为:
QNRoomStateConnected
- 正在重连时状态为:
QNRoomStateReconnecting
- 重连成功后状态为:
QNRoomStateReconnected
App 可根据当前房间状态处理相应的 UI 逻辑。
踢人
可以通过调用如下接口:
- (void)kickoutUser:(NSString *)userId;
将用户 userId
踢出房间。当本地调用该接口将用户 userId
成功踢出房间时,该被踢用户(userId)会收到被踢出房间的回调:
- (void)RTCEngine:(QNRTCEngine *)engine didKickoutByUserId:(NSString *)userId;
离开房间
可以通过调用如下接口:
- (void)leaveRoom;
离开房间。本地用户离开房间成功后,远端用户会收到该用户(userId)离开房间的回调。
- (void)RTCEngine:(QNRTCEngine *)engine didLeaveOfRemoteUserId:(NSString *)userId;
离开房间。本地用户离开房间成功后,本地会收到自己离开房间成功的回调。
- (void)RTCEngine:(QNRTCEngine *)engine didLeaveOfLocalSuccess:(BOOL)success;