最近公司需要开发一款直播互动的软件,最终选择了腾讯云平台进行开发,因为腾讯强大的实力,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:^{
//
// }];
// }
// });
// }];
}];
值得注意的是,每一步必须在上一步完成以后才能进行,所以最好所有的操作都在上一步的返回中操作
有时间再介绍私信和弹幕连麦的操作,不懂得朋友可以私信我或者留言,我看到了会解答