登录房间

更新时间: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;

userIdroomId 格式要求:字符串 类型,长度不超过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
    • 当用户被踢出的时候,会回调此方法,告知被踢出和原因。