登录房间
更新时间:2021-05-26
相关概念
实时音视频 SDK 使用房间和成员的概念,加入房间的成员可以发布自己的音视频流,在同一个房间内的其他成员可以接收到该用户的推流事件,订阅该音视频流即可完成音视频的播放流程
房间和成员
- 房间: 音视频相关事件的接收管理模块,房间内部的成员事件(成员加入、成员离开等)通过房间进行分发;
- 成员: 加入房间成功的用户为房间内部成员。
注: 只有推流用户才会触发远端用户接收事件
客户端交互时序图
音视频架构图
使用步骤
初始化和 SDK 鉴权
- 在使用音视频 SDK 之前需先调用 SDK 初始化和鉴权接口完成 SDK 的鉴权
/// 初始化 SDK
+ (void)initSdk;
/// SDK 鉴权
/// @param appId 向 LinkV 开发者平台申请的 AppId
/// @param skStr 向 LinkV 开发者平台申请的 AppSecret
/// @param userId 用户 ID
/// @param completion 鉴权完成回调
- (void)auth:(NSString *)appId
skStr:(NSString *)skStr
userId:(NSString *)userId
completion:(LVServiceCompletion)completion;
登录房间
- 如果已经有主播开播,会自动加入房间。
/// 加入音视频房间(音视频会议)
/// @param userId 用户 ID,需确保全局唯一,禁止多终端登录
/// @param roomId 房间 ID
/// @param isHost 是否是主持人
/// @param isOnlyAudio 是否以音频模式加入
/// @param delegate 房间回调代理
- (void)loginRoom:(NSString *)userId
roomId:(NSString *)roomId
isHost:(bool)isHost
isOnlyAudio:(bool)isOnlyAudio
delegate:(id<LVRTCEngineDelegate>)delegate;
userId
、roomId
格式要求:字符串
类型,长度不超过32,仅允许包含字母、数字或下划线。
登出房间
- 在退出房间的时候可调用此
api
,退出房间是否成功会通过 退出房间错误码 返回。
/*
* 退出房间
* @param completion 离开房间结果回调
*/
[[LVRTCEngine sharedInstance] logoutRoom:^(LVErrorCode code) {
NSLog (@"logoutRoom:%lu", (unsigned long) code);
}];
- 退出房间会触发
OnDeleteRemoter
代理回调,在此回调中可做相关处理。
/*
* 有成员离开的通知
* @param uid 离开用户 ID
*/
- (void)OnDeleteRemoter:(NSString*)uid;
房间事件
通过 loginRoom
方法调用,遵循 LVRTCEngineDelegate
代理的回调,在不同的回调里面可以做不同的业务处理。
相关事件回调
/*
* 加入房间成功的回调
* @param code 加入房间是否成功错误码
* @param users 用户列表,如果房间中有用户存在,该列表会自动生效
*/
- (void)OnEnterRoomComplete:(LVErrorCode)code users:(nullable NSArray<LVUser*>*)users;
/* 退出房间完成,异常退出和用户主动调用 logoutRoom 方法会触发该回调方法 */
- (void)OnExitRoomComplete;
/*
* 房间断开的通知,网络异常时 SDK 会自动进行重连,90 秒如果重连失败会触发该方法回调
* @param code 错误码
*/
- (void)OnRoomDisconnected:(LVErrorCode)code;
/*
* 有成员加入的通知
* @param users 成员列表
*/
- (void)OnAddRemoter:(NSArray<LVUser*>*)users;
/*
* 有成员离开的通知
* @param uid 离开用户 ID
*/
- (void)OnDeleteRemoter:(NSString*)uid;
/*
* / 用户被踢出房间
* / @param reason 被踢原因
* / @param roomId 房间号
*/
- (void)OnKickOff:(NSInteger)reason roomId:(NSString *)roomId;
/* 房间重连成功通知,SDK 在网络断开和恢复时会自动进行重连,重连结果通过该回调通知 APP */
- (void)OnRoomReconnected;
方法解析
OnEnterRoomComplete
- 调用 loginRoom 方法登录房间之后 会触发此回调方法,在此方法中可进行推流处理,如果登录房间失败,也会返回对应的错误码。
OnExitRoomComplete
- 调用 logoutRoom 方法后,会触发此回调方法,代表退出房间成功。
OnRoomDisconnected
- 如果网络不好房间断开,SDK内部会自动自动进行重连,90 秒如果重连失败会触发此该回调方法。
OnAddRemoter
- 当在直播间内,有新成员 startPublishing 发起推流的时候,房间内其它人会触发此回调方法,在此方法内可以播放新成员的流并添加渲染视图。
OnDeleteRemoter
- 房间内有人退出房间的时候会回调此方法,在此方法内删除房间内成员视图、停止播放媒体流等。
OnRoomReconnected
- 房间重连成功通知,在网络断开和恢复时会自动重连,重连结果通过该回调通知 APP。
OnKickOff
- 当用户被踢出的时候,会回调此方法,告知被踢出和原因。