每天写1000字

腾讯云直播---(LiveRoom)的使用详解

2018-06-27  本文已影响0人  明天请给我好消息

最近公司需要开发一款直播互动的软件,最终选择了腾讯云平台进行开发,因为腾讯强大的实力,LiveRoom组件里面包含了(直播,连麦,弹幕,私信等)功能,网上相关的文章很少,而且大厂的文档虽然高级但并不实用,我也是踩了不少误区总结了经验,希望可以帮助到各位.
下面是腾讯云的简介:
腾讯云平台LiveRoom的简介

集成腾讯云(LiveRoom)需要下面几个步骤:

1.功能不同多种版本可以选择,一般来说,选择全功能专业版就好了.
我一般选择Cocoapod的导入方法,因为这样不用自己配置,会省去不少事Cocoapod的导入方法.
如果想连麦等需要IM的功能,还需要导入ImSDK,具体怎么做我这边有链接ImSDK导入方法
2.主播界面具体使用:

1.初始化登录:

   //宏定义:#define kHttpServerAddrDomain   @"https://room.qcloud.com/weapp/live_room"
  // #define kHttpServerAddr_GetLoginInfo   @"https://room.qcloud.com/weapp/utils/get_login_info_debug"
           //其中sdkAppID,userID,userSig,accType这四个参数是后台返回的
            _liveRoom = [[LiveRoom alloc] init];
            _liveRoom.delegate = self;
            LoginInfo *loginInfo = [LoginInfo new];
            loginInfo.sdkAppID = [valueDict[@"sdkappid"] intValue];
            loginInfo.userID = valueDict[@"userid"];
            loginInfo.userSig = valueDict[@"usersig"];
            loginInfo.accType = valueDict[@"acctype"];
            loginInfo.userName = @"";
            loginInfo.userAvatar = @"";

           [self.liveRoom login:kHttpServerAddrDomain loginInfo:loginInfo withCompletion:^(int errCode, NSString *errMsg) {
 dispatch_async(dispatch_get_main_queue(), ^{
                    // 开启推流和本地预览
                    _pusherView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kDeviceWidth, KDeviceHeight)];
                    [_pusherView setBackgroundColor:[UIColor clearColor]];
                    [self.view insertSubview:_pusherView atIndex:0];
                    [_liveRoom startLocalPreview:_pusherView];
                     });
            }];

然后获取正在直播的列表,在主播这里这一步没有具体的作用,他的实际意义是方法里面初始化列表数组,其他地方用得上:

  [_liveRoom getRoomList:0 cnt:200 withCompletion:^(int errCode, NSString *errMsg, NSArray<RoomInfo *> *roomInfoArray) {
 }]; 

然后创建直播间,这里面是第一个难点:

                    //创建直播间createRoom
                   //createRoom这个参数一定要为空,创建成功后,腾讯后台会自动随机配置 roomInfo这个参数填写一个表示,比如房间号
                    [_liveRoom createRoom:@"" roomInfo:self.model.livecode withCompletion:^(int errCode, NSString *errMsg) {
                        NSLog(@"createRoom: errCode[%d] errMsg[%@]", errCode, errMsg);
                        dispatch_async(dispatch_get_main_queue(), ^{
                            if (errCode == 0) {
                                //创建成功,开始直播
                            } else {
                                //创建失败,-13已经存在直播间,这个时候直接进入直播间就好了
                                //下面的方法是直接进入直播间的方法enterRoom  通过房间号这个参数
                                    [_liveRoom enterRoom:self.model.livecode withView:_pusherView withCompletion:^(int errCode, NSString *errMsg) {
                                        NSLog(@"enterRoom: errCode[%d] errMsg[%@]", errCode, errMsg);
                                        dispatch_async(dispatch_get_main_queue(), ^{
                                            if (errCode == 0) {
                                                                                        [self appendSystemMsg:@"连接成功"];
                                                [_liveRoom startLocalPreview:_pusherView];
                                            } else {
                                                                                        [self alertTips:@"进入直播间失败" msg:errMsg completion:^{
                                                
                                                                                        }];
                                            }
                                        });
                                    }];
                                    
//                                }];
                                
                            }
                        });
                        
                    }];
3.用户界面具体使用:

同样第一步
1.初始化登录:

   //宏定义:#define kHttpServerAddrDomain   @"https://room.qcloud.com/weapp/live_room"
  // #define kHttpServerAddr_GetLoginInfo   @"https://room.qcloud.com/weapp/utils/get_login_info_debug"
           //其中sdkAppID,userID,userSig,accType这四个参数是后台返回的
            _liveRoom = [[LiveRoom alloc] init];
            _liveRoom.delegate = self;
            LoginInfo *loginInfo = [LoginInfo new];
            loginInfo.sdkAppID = [valueDict[@"sdkappid"] intValue];
            loginInfo.userID = valueDict[@"userid"];
            loginInfo.userSig = valueDict[@"usersig"];
            loginInfo.accType = valueDict[@"acctype"];
            loginInfo.userName = @"";
            loginInfo.userAvatar = @"";

           [self.liveRoom login:kHttpServerAddrDomain loginInfo:loginInfo withCompletion:^(int errCode, NSString *errMsg) {
               dispatch_async(dispatch_get_main_queue(), ^{
            // 播放大主播画面
            _playerView = [[UIView alloc] initWithFrame:self.view.frame];
            _playerView.backgroundColor = [UIColor blackColor] ;
            [self.view insertSubview:_playerView atIndex:0];
             });
            }];

下面是获取直播列表,然后通过房间名获取对应的系统分配的随机ID,进入直播间

            //获取列表
                [_liveRoom getRoomList:0 cnt:200 withCompletion:^(int errCode, NSString *errMsg, NSArray<RoomInfo *> *roomInfoArray) {
                    //遍历获取的数组,通过房间名获取相对于的其他参数 比如roomid
                    if (roomInfoArray.count > 0){
                        NSString *roomid = [NSString string];
                        for (int i = 0; i < roomInfoArray.count; i++) {
                            RoomInfo *roomInfo = roomInfoArray[i];
                            NSLog(@"---------------------%@",roomInfo.roomInfo);
                            if ([roomInfo.roomInfo isEqualToString:self.model.livecode]){
                                  roomid = roomInfo.roomID;
                            }else{
                                
                            }
                        }
                        //同样是通过enterRoom这个参数进入直播间  现在这个参数就是房间名
                        [_liveRoom enterRoom:roomid withView:_playerView withCompletion:^(int errCode, NSString *errMsg) {
                            NSLog(@"enterRoom: errCode[%d] errMsg[%@]", errCode, errMsg);
                            dispatch_async(dispatch_get_main_queue(), ^{
                                if (errCode == 0) {
                                                                            [self appendSystemMsg:@"连接成功"];

                                } else {
                                                                            [self alertTips:@"进入直播间失败" msg:errMsg completion:^{

                                                                            }];
                                }
                            });
                        }];

                    }else{
                         [self alertTips:@"目前没有房间" msg:@""];
                    }


//                    [_liveRoom enterRoom:self.model.livecode withView:_playerView withCompletion:^(int errCode, NSString *errMsg) {
//                                                    NSLog(@"enterRoom: errCode[%d] errMsg[%@]", errCode, errMsg);
//                                                    dispatch_async(dispatch_get_main_queue(), ^{
//                                                        if (errCode == 0) {
//                                                                                                    [self appendSystemMsg:@"连接成功"];
//
//                                                        } else {
//                                                                                                    [self alertTips:@"进入直播间失败" msg:errMsg completion:^{
//
//                                                                                                    }];
//                                                        }
//                                                    });
//                                                }];

                    
                }];

值得注意的是,每一步必须在上一步完成以后才能进行,所以最好所有的操作都在上一步的返回中操作
有时间再介绍私信和弹幕连麦的操作,不懂得朋友可以私信我或者留言,我看到了会解答

上一篇下一篇

猜你喜欢

热点阅读