| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828 |
- //
- // YBSocketLive.m
- // YBVideo
- //
- // Created by YB007 on 2019/11/29.
- // Copyright © 2019 cat. All rights reserved.
- //
- #import "YBSocketLive.h"
- #import <SocketIO/SocketIO-Swift.h>
- #import "YBLinkAlertView.h"
- #import "YBAnchorPKAlert.h"
- @interface YBSocketLive(){
- NSDictionary *_roomDic;
- BOOL _isBusy;
- int _linkMicAskLast;
- NSTimer *_linkMicAskTimer; //连麦请求中倒计时
- NSString *_linkRequestUid;
- }
- @property(nonatomic,strong)SocketManager *socketManager;
- @property(nonatomic,strong)SocketIOClient *socketClient;
- @property(nonatomic,strong)YBLinkAlertView *linkAlertView;
- @property(nonatomic,strong)YBAnchorPKAlert *pkAlertView;
- @property(nonatomic,assign)BOOL hostLinking; //主播连麦中【包含用户-主播、主播-主播连麦】
- @end
- @implementation YBSocketLive
- static YBSocketLive*liveSocketManeger = nil;
- +(instancetype)liveSocketManeger {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- liveSocketManeger = [[super allocWithZone:NULL]init];
- });
- return liveSocketManeger;
- }
- +(instancetype)allocWithZone:(struct _NSZone *)zone {
- return [self liveSocketManeger];
- }
- #pragma mark - socket 链接
- -(void)liveConnectSocket:(NSDictionary *)conDic {
- _linkMicAskLast = 10;
- _roomDic = conDic;
- _isBusy = NO;
- NSString *socketUrl = minstr([_roomDic valueForKey:@"chatserver"]);
- NSString *liveStream = minstr([_roomDic valueForKey:@"stream"]);
- _socketManager = [[SocketManager alloc]initWithSocketURL:[NSURL URLWithString:socketUrl] config:@{@"log": @NO, @"compress": @YES}];
- _socketClient = _socketManager.defaultSocket;
- NSArray *cur = @[@{@"username":[Config getOwnNicename],
- @"uid":[Config getOwnID],
- @"token":[Config getOwnToken],
- @"roomnum":[Config getOwnID],
- @"stream":liveStream,
- @"lang":[YBLanguageTools serviceLang],
- }];
- [_socketClient connect];
- [_socketClient on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) {
- [_socketClient emit:@"conn" with:cur];
- NSLog(@"socket链接");
- }];
- YBWeakSelf;
- [_socketClient on:@"conn" callback:^(NSArray* data, SocketAckEmitter* ack) {
- NSLog(@"进入房间");
- if (_isBusy && weakSelf.checkLiveingStatus) {
- weakSelf.checkLiveingStatus(@"主播-检查状态", @{}); //这里的"主播-检查状态"只是用中文表述事件,不必翻译
- }
- _isBusy = YES;
- }];
-
- [_socketClient on:@"broadcastingListen" callback:^(NSArray* data, SocketAckEmitter* ack) {
- /*
- if([[data[0] firstObject] isEqual:@"stopplay"]) {
- NSLog(@"%@",[data[0] firstObject]);
- if (weakSelf.superStopRoom) {
- weakSelf.superStopRoom(@"主播-超管关播", @{});//这里的"主播-超管关播"只是用中文表述事件,不必翻译
- }
- NSDictionary *contentDic = @{@"title":@"",@"msg":YZMsg(@"涉嫌违规,被下播"),@"left":@"",@"right":YZMsg(@"确定")};
- [YBAlertView showAlertView:contentDic complete:^(int eventType) {
-
- }];
- return ;
- }
- */
- for (NSString *path in data[0]) {
- NSDictionary *jsonArray = [path JSONValue];
- NSDictionary *msg = [[jsonArray valueForKey:@"msg"] firstObject];
- NSString *retcode = [NSString stringWithFormat:@"%@",[jsonArray valueForKey:@"retcode"]];
- if ([retcode isEqual:@"409002"]) {
- [MBProgressHUD showError:YZMsg(@"你已被禁言")];
- return;
- }
- NSString *method = [msg valueForKey:@"_method_"];
- [weakSelf getmessage:msg andMethod:method];
- }
- }];
- }
- -(void)getmessage:(NSDictionary *)msg andMethod:(NSString *)method{
- NSLog(@"收到socekt:%@",msg);
- if ([method isEqual:Soc_SendMsg]) {
- //文本消息
- NSString *msgtype = [msg valueForKey:@"msgtype"];
- if([msgtype isEqual:@"2"]) {
- //默认-聊天消息
- NSString *titleColor = @"0";
- NSString *ct = minstr([msg valueForKey:@"ct"]);
- if ([lagType isEqual:EN] && ![PublicObj checkNull:minstr([msg valueForKey:@"ct_en"])]) {
- ct = minstr([msg valueForKey:@"ct_en"]);
- }
- NSString *uname = minstr([msg valueForKey:@"uname"]);
- NSString *uid = minstr([msg valueForKey:@"uid"]);
- NSString *userType = minstr([msg valueForKey:@"usertype"]);
- NSString *guardType = minstr([msg valueForKey:@"guard_type"]);
- NSString *isAnchor = @"0";
- if (![PublicObj checkNull:minstr([msg valueForKey:@"heart"])]) {
- //说明是点亮消息
- titleColor = [@"light" stringByAppendingFormat:@"%@",[msg valueForKey:@"heart"]];
- if (self.userLight) {
- self.userLight(@"主播-用户点亮", @{});
- }
- }
- NSDictionary *chatDic = @{@"userName":uname,
- @"contentChat":ct,
- @"id":uid,
- @"titleColor":titleColor,
- @"usertype":userType,
- @"isAnchor":isAnchor,
- @"guard_type":guardType,
- };
- if (self.userSendMsg) {
- self.userSendMsg(@"主播-收到发言", chatDic);
- }
- }
- if([msgtype isEqual:@"0"]) {
- NSString *action = minstr([msg valueForKey:@"action"]);
- if ([action isEqual:@"1"] && self.userLeave) {
- //用户离开.离开的用户 id 在 ct 里边 'id'
- self.userLeave(@"主播-用户离开", msg);
- NSString *leaveuid = minstr([[msg valueForKey:@"ct"] valueForKey:@"id"]);
- if ((_linkAlertView && [_linkAlertView.applyUid isEqual:leaveuid]) || [leaveuid isEqual:_linkRequestUid]) {
- _hostLinking = NO;
- //退出的用户是发起连麦的人
- [self destroyLinkMicAskTimer];
- [self cancelLinkAlertShow];
- }
- }
- if ([action isEqual:@"0"] && self.userEnter) {
- //用户进入.离开的用户 id 在 ct 里边 'id'
- self.userEnter(@"主播-用户进入", msg);
- }
- }
- }
- else if ([method isEqual:Soc_SystemNot] || [method isEqual:Soc_KickUser] || [method isEqual:Soc_ShutUpUser] ||[method isEqual:Soc_setAdmin]){
- //系统消息、踢人、禁言、设置管理
- //在主播端这些类型的消息都只是在公屏显示一句话 即 [msg valueForKey:@"ct"]
- NSString *showCt = minstr([msg valueForKey:@"ct"]);
- if ([lagType isEqual:EN] && ![PublicObj checkNull:minstr([msg valueForKey:@"ct_en"])]) {
- showCt = minstr([msg valueForKey:@"ct_en"]);
- }
- NSDictionary *chatDic = @{@"userName":YZMsg(@"直播间消息"),
- @"contentChat":showCt,
- @"id":@"",
- @"titleColor":@"firstlogin",
- @"usertype":@"",
- @"isAnchor":@"",
- };
- if (self.systemMsg) {
- self.systemMsg(@"主播-系统消息", chatDic);
- }
- }
- else if ([method isEqual:Soc_SendGift]){
- NSLog(@"=====sendgift-get====:%@",msg);
- //送礼物
- if ([minstr([msg valueForKey:@"ifpk"]) isEqual:@"1"] && self.linkPKProgress) {
- self.linkPKProgress(@"主播-PK进度", msg);
- }
- if (self.sendGift && [minstr([msg valueForKey:@"roomnum"]) isEqual:[Config getOwnID]]) {
- self.sendGift(@"主播-收到礼物", msg);
- }
- }
- else if ([method isEqual:Soc_light]){
- //点亮
- NSString *msgtype = [msg valueForKey:@"msgtype"];
- NSString *action = [msg valueForKey:@"action"];
- if([msgtype isEqual:@"0"] && [action isEqual:@"2"] && self.userLight){
- self.userLight(@"主播-用户点亮", @{});
- }
- }
- else if ([method isEqual:Soc_stopLive]){
- //超管关播
- if (self.superStopRoom) {
- self.superStopRoom(@"主播-超管关播", @{});
- }
- // 警告框
- [YBLiveRoomAlertView showRoomWarning:msg];
- }
- else if ([method isEqual:Soc_StartEndLive]){
- //直播结束
- NSString *action = minstr([msg valueForKey:@"action"]);
- if ([action isEqual:@"19"] && self.otherDeviceLogin) {
- self.otherDeviceLogin(@"主播-其他设备登陆", @{});
- }
- if ([action isEqual:@"18"] && self.superStopRoom) {
- self.superStopRoom(@"主播-超管关播", @{});
- }
- }
- else if ([method isEqual:Soc_disconnect]){
- //断开链接
- NSString *action = [msg valueForKey:@"action"];
- if ([action isEqual:@"1"] && self.userLeave) {
- //用户离开.离开的用户 id 在 ct 里边 'id'
- self.userLeave(@"主播-用户离开", msg);
- NSString *leaveuid = minstr([[msg valueForKey:@"ct"] valueForKey:@"id"]);
- if ((_linkAlertView && [_linkAlertView.applyUid isEqual:leaveuid]) ||[leaveuid isEqual:_linkRequestUid]) {
- _hostLinking = NO;
- //退出的用户是发起连麦的人
- [self destroyLinkMicAskTimer];
- [self cancelLinkAlertShow];
- }
- }
- }
- else if ([method isEqual:Soc_BuyGuard]){
- //购买守护
- if (self.buyGuardMsg) {
- self.buyGuardMsg(@"主播-买守护", msg);
- }
- NSDictionary *chatDic = @{@"userName":YZMsg(@"直播间消息"),
- @"contentChat":[NSString stringWithFormat:@"%@ %@",[msg valueForKey:@"uname"],YZMsg(@"守护了主播")],
- @"id":@"",
- @"titleColor":@"firstlogin",
- @"usertype":@"",
- @"isAnchor":@"0",
- };
- if (self.systemMsg) {
- self.systemMsg(@"主播-系统消息", chatDic);
- }
- }
- else if ([method isEqual:Soc_ConnectVideo]){
- //用户-主播连麦
- // 1 有人发送连麦请求 2 主播接受连麦 3 主播拒绝连麦 4 用户推流,发送自己的播流地址 5 用户断开连麦 6 主播断开连麦 7 主播正忙碌 8 主播无响应
- int action = [minstr([msg valueForKey:@"action"]) intValue];
- switch (action) {
- case 1:{
- if (_linkMicAskLast != 10) {
- [self liveSendHostBusyTouser:minstr([msg valueForKey:@"uid"])];
- return;
- }
- if (_hostLinking) {
- [self liveSendHostBusyTouser:minstr([msg valueForKey:@"uid"])];
- return;
- }
- [self destroyLinkMicAskTimer];
- _linkMicAskLast = 10;
- _linkMicAskTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(linkMicAskEvent) userInfo:nil repeats:YES];
- _linkRequestUid = minstr([msg valueForKey:@"uid"]);
- [self showLinkAlert:msg];
- }break;
- case 4:{
- if ([_linkRequestUid isEqual:minstr([msg valueForKey:@"uid"])] && self.linkPlayMsg) {
- self.linkPlayMsg(@"主播-连麦用户流信息", msg);
- }
- }break;
- case 5:{
- _hostLinking = NO;
- if (self.linkUserDisconnect) {
- self.linkUserDisconnect(@"主播-连麦用户挂断", msg);
- }
- }break;
- default:
- break;
- }
- }
- else if ([method isEqual:Soc_LiveConnect]){
- //1:发起连麦;2;接受连麦;3:拒绝连麦;4:连麦成功通知;5.手动断开连麦;7:对方正忙碌 8:对方无响应
- int action = [minstr([msg valueForKey:@"action"]) intValue];
- switch (action) {
- case 1:{
- if (_linkMicAskLast != 10) {
- [self liveSendAnchorCtrOfAcntion:@"7" andExtDic:msg];
- return;
- }
- if (_hostLinking) {
- [self liveSendAnchorCtrOfAcntion:@"7" andExtDic:msg];
- return;
- }
- if (self.linkHostToHostRequest) {
- self.linkHostToHostRequest(@"主播-收到连麦请求", msg);
- }
- [self destroyLinkMicAskTimer];
- _linkMicAskLast = 10;
- _linkMicAskTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(linkMicAskEvent) userInfo:nil repeats:YES];
- _linkRequestUid = minstr([msg valueForKey:@"uid"]);
- [self showLinkAlert:msg];
- }break;
- case 3:{
- [MBProgressHUD showPop:YZMsg(@"对方主播拒绝了你的连麦申请")];
- _hostLinking = NO;
- }break;
- case 4:{
- [MBProgressHUD showPop:YZMsg(@"对方主播接受了您的连麦请求,开始连麦")];
- if (self.linkHostToHostMsg) {
- self.linkHostToHostMsg(@"主播-主播连麦成功", msg);
- }
- _hostLinking = YES;
-
- }break;
- case 5:{
- [MBProgressHUD showPop:YZMsg(@"连麦已断开")];
- if (self.linkHostToHostDisconnect) {
- self.linkHostToHostDisconnect(@"主播-主播断开", msg);
- }
- _hostLinking = NO;
- }break;
- case 7:{
- [MBProgressHUD showPop:YZMsg(@"对方正忙碌")];
- _hostLinking = NO;
- }break;
- case 8:{
- [MBProgressHUD showPop:YZMsg(@"对方无响应")];
- _hostLinking = NO;
- }break;
-
- default:
- break;
- }
- }
- else if ([method isEqual:Soc_LivePK]){
- NSLog(@"=====livePK-get====:%@",msg);
- //1:发起PK;2;接受PK;3:拒绝PK;4:PK成功通知;5.;7:对方正忙碌 8:对方无响应 9:PK结果
- int action = [minstr([msg valueForKey:@"action"]) intValue];
- switch (action) {
- case 1:{
- if (_pkAlertView) {//理论不会出现这种情况
- [self liveSendPkCtrAction:@"7"];
- return;
- }
- if (self.linkPKGetRequest) {
- self.linkPKGetRequest(@"主播-收到PK请求", msg);
- }
- [self showPKAlert:msg];
- }break;
- case 3:{
- [self cancelPKAlert];
- if (self.linkPKUnAgree) {
- self.linkPKUnAgree(@"主播-PK拒绝", msg);
- }
- [MBProgressHUD showPop:YZMsg(@"对方主播拒绝了您的PK请求")];
- }break;
- case 4:{
- [self cancelPKAlert];
- if (self.linkPKSuc) {
- self.linkPKSuc(@"主播-开始PK", msg);
- }
- }break;
- case 7:{
- [self cancelPKAlert];
- if (self.linkPKBusy) {
- self.linkPKBusy(@"主播-PK忙碌", msg);
- }
- [MBProgressHUD showError:YZMsg(@"对方正忙碌")];
- }break;
- case 8:{
- [self cancelPKAlert];
- if (self.linkPKTimeout) {
- self.linkPKTimeout(@"主播-PK超时", msg);
- }
- [MBProgressHUD showError:YZMsg(@"对方无响应")];
- }break;
- case 9:{
- if (self.linkPKResult) {
- self.linkPKResult(@"主播-PK结果", msg);
- }
- }break;
- default:
- break;
- }
- }
- else if ([method isEqual:Soc_SystemWarning]) {
- /// 直播警告
- [YBLiveRoomAlertView showRoomWarning:msg];
- }
-
-
- }
- -(void)showPKAlert:(NSDictionary *)dic {
- [self cancelPKAlert];
-
- _pkAlertView = [[YBAnchorPKAlert alloc]initWithFrame:CGRectMake(_window_width*0.15, _window_height/2-(_window_width*0.7/52*34)/2, _window_width*0.7, _window_width*0.7/52*34) andIsStart:NO];
- [[UIApplication sharedApplication].delegate.window addSubview:_pkAlertView];
- YBWeakSelf
- _pkAlertView.anchorPkEvent = ^(AnchorPkAlertType pkAlertType) {
- [weakSelf pkAlertCallBack:pkAlertType];
- };
- }
- -(void)pkAlertCallBack:(AnchorPkAlertType)pkAlertType {
- [self cancelPKAlert];
- switch (pkAlertType) {
- case PkAlertType_unAgree:{
- [self liveSendPkCtrAction:@"3"];
- if (self.linkPKUnAgree) {
- self.linkPKUnAgree(@"主播-PK拒绝", @{});
- }
- }break;
- case PkAlertType_Agree:{
- [self liveSendPkCtrAction:@"2"];
- }break;
- case PkAlertType_TimeOut:{
- [self liveSendPkCtrAction:@"8"];
- if (self.linkPKTimeout) {
- self.linkPKTimeout(@"主播-PK超时", @{});
- }
- }default:
- break;
- }
- }
- -(void)cancelPKAlert {
- if (_pkAlertView) {
- [_pkAlertView removeTimer];
- [_pkAlertView removeFromSuperview];
- _pkAlertView = nil;
- }
- }
- - (void)showLinkAlert:(NSDictionary *)dic{
- [self cancelLinkAlertShow];
- _linkAlertView = [[YBLinkAlertView alloc]initWithFrame:CGRectMake(0, 0, _window_width, _window_height) andUserMsg:dic];
- _linkAlertView.timeL.text = [NSString stringWithFormat:@"%@(10)...",YZMsg(@"发起连麦请求")];
- [[UIApplication sharedApplication].delegate.window addSubview:_linkAlertView];
- [_linkAlertView show];
- YBWeakSelf;
- _linkAlertView.linkAlertEvent = ^(BOOL isAgree,BOOL isHostLink) {
- _linkMicAskLast = 10;
- [weakSelf destroyLinkMicAskTimer];
- if (isAgree) {
- //连麦请求-同意
- if (isHostLink) {
- //主播连麦-检查开播状态
- [weakSelf checkLinkLive:dic];
- }else {
- //用户连麦
- [weakSelf liveSendHostIsAgree:YES andTouid:minstr([dic valueForKey:@"uid"])];
- _hostLinking = YES;
- }
- }else{
- //连麦-拒绝
- if (isHostLink) {
- [weakSelf liveSendAnchorCtrOfAcntion:@"3" andExtDic:dic];
- }else {
- //用户连麦
- [weakSelf liveSendHostIsAgree:NO andTouid:minstr([dic valueForKey:@"uid"])];
- }
- _hostLinking = NO;
- }
- };
-
- }
- //检查主播状态
- -(void)checkLinkLive:(NSDictionary *)checkDic {
- NSDictionary *postDic = @{@"stream":minstr([checkDic valueForKey:@"stream"]),@"uid_stream":minstr([_roomDic valueForKey:@"stream"])};
- YBWeakSelf;
- [YBNetworking postWithUrl:@"Livepk.CheckLive" Dic:postDic Suc:^(int code, id info, NSString *msg) {
- _linkMicAskLast = 10;
- [weakSelf destroyLinkMicAskTimer];
- if (code == 0) {
- _hostLinking = YES;
- NSString *newPull = minstr([[info firstObject] valueForKey:@"pull"]);
- [weakSelf liveSendAnchorCtrOfAcntion:@"2" andExtDic:@{@"pull":newPull,@"uid":minstr([checkDic valueForKey:@"uid"])}];
- }else{
- _hostLinking = NO;
- }
- } Fail:^(id fail) {
- _linkMicAskLast = 10;
- [weakSelf destroyLinkMicAskTimer];
- _hostLinking = NO;
- }];
- }
- -(void)cancelLinkAlertShow {
- _linkMicAskLast = 10;
- if (_linkAlertView) {
- [_linkAlertView removeFromSuperview];
- _linkAlertView = nil;
- }
- }
- -(void)linkMicAskEvent {
- _linkMicAskLast -= 1;
- _linkAlertView.timeL.text = [NSString stringWithFormat:@"%@(%ds)...",YZMsg(@"发起连麦请求"),_linkMicAskLast];
- if (_linkMicAskLast <= 0) {
- if (_linkAlertView.isHostToHost) {
- [self liveSendAnchorCtrOfAcntion:@"8" andExtDic:@{@"uid":_linkRequestUid}];
- }else {
- [self liveSendHostTimeOut:_linkRequestUid];
- }
- [self destroyLinkMicAskTimer];
- [self cancelLinkAlertShow];
- }
- }
- -(void)destroyLinkMicAskTimer {
- if (_linkMicAskTimer) {
- [_linkMicAskTimer invalidate];
- _linkMicAskTimer = nil;
- }
- }
- #pragma mark - socket 断开
- -(void)liveDisconnectSocket {
- [_socketClient disconnect];
- [_socketClient off:@""];
- [_socketClient leaveNamespace];
- _socketClient = nil;
- _socketManager = nil;
- _hostLinking = NO;
-
- [self cancelLinkAlertShow];
- [self cancelPKAlert];
- [self destroyLinkMicAskTimer];
- }
- #pragma mark - /** 发送公屏聊天 */
- -(void)liveSendMsg:(NSString *)eventStr {
- NSArray *msgData =@[
- @{
- @"msg": @[
- @{
- @"_method_": Soc_SendMsg,
- @"action": @"0",
- @"msgtype": @"2",
- @"isAnchor":@"1",
- @"uname": [Config getOwnNicename],
- @"uid": [Config getOwnID],
- @"ct":eventStr,
- @"usertype":@"50",
- }
- ],
- @"retcode": @"000000",
- @"retmsg": @"OK"
- }
- ];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- #pragma mark - /** 主播、管理踢人 */
- -(void)liveSendKickUser:(NSDictionary *)kickDic {
- NSString *ct = [NSString stringWithFormat:@"%@ %@",[kickDic valueForKey:@"touname"],@"被踢出房间"];
- NSString *ct_en = [NSString stringWithFormat:@"%@ %@",[kickDic valueForKey:@"touname"],@"kicked out of room"];
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_KickUser,
- @"action":@"2",
- @"ct":ct,
- @"ct_en":ct_en,
- @"uid":[Config getOwnID],
- @"uname":[Config getOwnNicename],
- @"touid":minstr([kickDic valueForKey:@"touid"]),
- @"touname":minstr([kickDic valueForKey:@"touname"]),
- @"msgtype":@"4",
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [MBProgressHUD showError:YZMsg(@"踢人成功")];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- #pragma mark - /** 主播、管理员禁言 */
- -(void)liveSendShutUpUser:(NSDictionary *)shutUpDic {
- NSString *type = minstr([shutUpDic valueForKey:@"type"]);
- NSString *touname = minstr([shutUpDic valueForKey:@"touname"]);
- NSString *msg = [NSString stringWithFormat:@"%@ %@",touname,@"被本场禁言"];
- NSString *msg_en = [NSString stringWithFormat:@"%@ %@",touname,@"has been shup up in this live stream"];
- if ([type isEqual:@"0"]) {
- msg = [NSString stringWithFormat:@"%@ %@",touname,@"被永久禁言"];
- msg_en = [NSString stringWithFormat:@"%@ %@",touname,@"shut up permanently"];
- }
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_ShutUpUser,
- @"action":@"1",
- @"ct":msg,
- @"ct_en":msg_en,
- @"uid":[Config getOwnID],
- @"uname":[Config getOwnNicename],
- @"touid":minstr([shutUpDic valueForKey:@"touid"]),
- @"touname":touname,
- @"msgtype":@"4",
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [MBProgressHUD showError:YZMsg(@"禁言成功")];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- #pragma mark - /** 来电话 */
- -(void)liveSendPhoneCall:(NSString *)eventStr andEn:(NSString *)eventStr_en{
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_SystemNot,
- @"action":@"13",
- @"ct":eventStr,
- @"ct_en":eventStr_en,
- @"uid":@"",
- @"uname":YZMsg(@"直播间消息"),
- @"msgtype":@"4",
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- #pragma mark - /** 主播设置、取消管理 */
- -(void)liveSendSetAdmin:(NSDictionary *)adminDic {
-
- NSString *isAdmin = minstr([adminDic valueForKey:@"isadmin"]);
- NSString *touid = minstr([adminDic valueForKey:@"touid"]);
- NSString *touname = minstr([adminDic valueForKey:@"touname"]);
- NSString *ctMsg;
- NSString *ctMsg_en;
- if ([isAdmin isEqual:@"0"]) {
- ctMsg = @"被取消管理";
- ctMsg_en = @"Admin cancelled";
- [MBProgressHUD showPop:YZMsg(@"取消管理员成功")];
- }else {
- ctMsg = @"被设为管理";
- ctMsg_en = @"set as Admin";
- [MBProgressHUD showPop:YZMsg(@"设置管理员成功")];
- }
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_setAdmin,
- @"action":isAdmin,
- @"ct":[NSString stringWithFormat:@"%@ %@",touname,ctMsg],
- @"ct_en":[NSString stringWithFormat:@"%@ %@",touname,ctMsg_en],
- @"uid":[Config getOwnID],
- @"uname":YZMsg(@"直播间消息"),
- @"touid":touid,
- @"touname":touname,
- @"msgtype":@"1",
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- /** 在售商品-展示、隐藏 */
- -(void)liveSendOnSaleShowHidden:(NSDictionary *)goodsDic;{
- //action 1-展示 0-隐藏
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_goodsLiveShow,
- @"action":minstr([goodsDic valueForKey:@"action"]),
- @"msgtype":@"0",
- @"goods_name":minstr([goodsDic valueForKey:@"name"]),
- @"goods_old_price":minstr([goodsDic valueForKey:@"old_price"]),
- @"goods_price":minstr([goodsDic valueForKey:@"price"]),
- @"goods_thumb":minstr([goodsDic valueForKey:@"thumb"]),
- @"goods_type":minstr([goodsDic valueForKey:@"type"]),
- @"goodsid":minstr([goodsDic valueForKey:@"id"]),
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- #pragma mark - /** 用户-主播连麦 */
- /*
- 1 有人发送连麦请求
- 2 主播接受连麦
- 3 主播拒绝连麦
- 4 用户推流,发送自己的播流地址
- 5 用户断开连麦
- 6 主播断开连麦
- 7 主播正忙碌
- 8 主播无响应
- */
- -(void)liveSendHostIsAgree:(BOOL)isAgree andTouid:(NSString *)touid {
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_ConnectVideo,
- @"action": isAgree?@"2":@"3",
- @"msgtype": @"10",
- @"touid":touid,
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- -(void)liveSendHostDisconnect:(NSDictionary *)userInfo{
- _hostLinking = NO;
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_ConnectVideo,
- @"action":@"6",
- @"msgtype": @"10",
- @"touid":minstr([userInfo valueForKey:@"uid"]),
- @"uname":minstr([userInfo valueForKey:@"uname"]),
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- -(void)liveSendHostBusyTouser:(NSString *)touid; {
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_ConnectVideo,
- @"action": @"7",
- @"msgtype": @"10",
- @"touid":touid
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- -(void)liveSendHostTimeOut:(NSString *)touid {
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_ConnectVideo,
- @"action": @"8",
- @"msgtype": @"10",
- @"touid":touid
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- #pragma mark - /** 主播-主播 连麦 */
- //1:发起连麦;2;接受连麦;3:拒绝连麦;4:连麦成功通知;5.手动断开连麦;7:对方正忙碌 8:对方无响应
- ///主播-主播 发起
- -(void)liveSendAnchorStartLink:(NSDictionary *)otherInfo andMyInfo:(NSDictionary *)myInfo {
- _linkRequestUid = minstr([otherInfo valueForKey:@"uid"]);
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_LiveConnect,
- @"action":@"1",
- @"msgtype": @"0",
- @"uid":[Config getOwnID],
- @"uname":[Config getOwnNicename],
- @"uhead":[Config getUserAvatar],
- @"sex":[Config getUserSex],
- @"pkuid":minstr([otherInfo valueForKey:@"uid"]),
- @"pkpull":minstr([myInfo valueForKey:@"pull"]),
- @"stream":minstr([_roomDic valueForKey:@"stream"]),
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- -(void)liveSendAnchorCtrOfAcntion:(NSString *)action andExtDic:(NSDictionary *)extDic {
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_LiveConnect,
- @"action":action,
- @"msgtype": @"0",
- @"uid":[Config getOwnID],
- @"uname":[Config getOwnNicename],
- @"uhead":[Config getUserAvatar],
- @"pkuid":minstr([extDic valueForKey:@"uid"]),
- @"pkpull":[PublicObj checkNull:minstr([extDic valueForKey:@"pull"])]?@"":minstr([extDic valueForKey:@"pull"]),
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- #pragma mark - /** PK */
- //1:发起PK;2;接受PK;3:拒绝PK;4:PK成功通知;5.;7:对方正忙碌 8:对方无响应 9:PK结果
- -(void)liveSendStartPk {
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_LivePK,
- @"action":@"1",
- @"msgtype": @"0",
- @"uid":[Config getOwnID],
- @"uname":[Config getOwnNicename],
- @"uhead":[Config getUserAvatar],
- @"sex":[Config getUserSex],
- @"pkuid":_linkRequestUid,
- @"stream":minstr([_roomDic valueForKey:@"stream"]),
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
- }
- -(void)liveSendPkCtrAction:(NSString *)action {
- NSArray *msgData = @[
- @{
- @"msg":
- @[@{
- @"_method_":Soc_LivePK,
- @"action":action,
- @"msgtype": @"0",
- @"uid":[Config getOwnID],
- @"uname":[Config getOwnNicename],
- @"uhead":[Config getUserAvatar],
- @"sex":[Config getUserSex],
- @"pkuid":_linkRequestUid,
- }],
- @"retcode":@"000000",
- @"retmsg":@"OK"}];
- [_socketClient emit:@"broadcast" with:msgData];
-
- NSLog(@"====PK发送同意拒绝:===%@",msgData);
- }
- @end
|