From 1dabb01baaeb80896d5139389bdcb22db0a89bb8 Mon Sep 17 00:00:00 2001 From: fengshuo <963787902@qq.com> Date: Tue, 1 Nov 2022 15:04:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E5=9B=9E=E5=A4=8D=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E6=9C=8D=E5=8A=A1=E7=AB=AF=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../XPRoomQuickMessageContainView.h | 1 + .../XPRoomQuickMessageContainView.m | 41 +- .../View/XPWishGiftCreateItemViewController.m | 13 +- .../View/XPWishGiftCreateViewController.m | 18 +- .../Main/Room/View/XPRoomViewController.m | 1448 +++++++++-------- 5 files changed, 768 insertions(+), 753 deletions(-) diff --git a/xplan-ios/Main/Room/View/QuickMessageView/XPRoomQuickMessageContainView.h b/xplan-ios/Main/Room/View/QuickMessageView/XPRoomQuickMessageContainView.h index 9984b38e..f9aa7444 100644 --- a/xplan-ios/Main/Room/View/QuickMessageView/XPRoomQuickMessageContainView.h +++ b/xplan-ios/Main/Room/View/QuickMessageView/XPRoomQuickMessageContainView.h @@ -15,6 +15,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithDelegate:(id)delegate; +@property (nonatomic, strong) NSArray *titleArray; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/QuickMessageView/XPRoomQuickMessageContainView.m b/xplan-ios/Main/Room/View/QuickMessageView/XPRoomQuickMessageContainView.m index e47c3c35..312c88fe 100644 --- a/xplan-ios/Main/Room/View/QuickMessageView/XPRoomQuickMessageContainView.m +++ b/xplan-ios/Main/Room/View/QuickMessageView/XPRoomQuickMessageContainView.m @@ -21,8 +21,6 @@ @interface XPRoomQuickMessageContainView () @property (nonatomic, strong) UICollectionView *collectionView; - -@property (nonatomic, strong) NSMutableArray *titleArray; ///关闭 @property (nonatomic,strong) UIButton *closeButton; ///代理 @@ -72,7 +70,9 @@ - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { XPRoomQuidkMessageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomQuidkMessageCell class]) forIndexPath:indexPath]; - cell.title = self.titleArray[indexPath.row]; + if (self.titleArray.count > 0) { + cell.title = self.titleArray[indexPath.row]; + } return cell; } @@ -84,16 +84,18 @@ } - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - NSDate *datenow = [NSDate date];//现在时间 - long time2 = (long)([datenow timeIntervalSince1970]*1000); - long aTime = (time2 - self.lastSendTime) / 1000; - if (aTime < 10) { - [XCHUDTool showErrorWithMessage:@"你发送的太频繁啦,请稍后再试"]; - return; - } - self.lastSendTime = time2; - NSString *str = self.titleArray[indexPath.row]; - [self sendText:str]; + if (self.titleArray.count > 0) { + NSDate *datenow = [NSDate date];//现在时间 + long time2 = (long)([datenow timeIntervalSince1970]*1000); + long aTime = (time2 - self.lastSendTime) / 1000; + if (aTime < 10) { + [XCHUDTool showErrorWithMessage:@"你发送的太频繁啦,请稍后再试"]; + return; + } + self.lastSendTime = time2; + NSString *str = self.titleArray[indexPath.row]; + [self sendText:str]; + } } - (void)sendText:(NSString *)text { @@ -150,6 +152,11 @@ } #pragma mark - Getters And Setters +- (void)setTitleArray:(NSArray *)titleArray { + _titleArray = titleArray; + [self.collectionView reloadData]; +} + - (UICollectionView *)collectionView{ if (!_collectionView) { UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; @@ -165,14 +172,6 @@ return _collectionView; } -- (NSMutableArray *)titleArray { - if (!_titleArray) { - _titleArray = [NSMutableArray arrayWithObjects:@"萌新求关注", @"ღ( ´・ᴗ・` )比心", @"贴贴", @"这个怎么玩呀?", @"我要上麦", @"么么叽!么么哒", @"老板大气", @"下次一定!", nil]; - } - return _titleArray; -} - - - (UIButton *)closeButton { if (!_closeButton) { _closeButton = [[UIButton alloc] init]; diff --git a/xplan-ios/Main/Room/View/WishGift/View/XPWishGiftCreateItemViewController.m b/xplan-ios/Main/Room/View/WishGift/View/XPWishGiftCreateItemViewController.m index bdf36e21..abc25a8d 100644 --- a/xplan-ios/Main/Room/View/WishGift/View/XPWishGiftCreateItemViewController.m +++ b/xplan-ios/Main/Room/View/WishGift/View/XPWishGiftCreateItemViewController.m @@ -235,7 +235,6 @@ if (self.levelTwoGiftList.count > 0) { giftInfo = self.levelTwoGiftList.firstObject; } - self.giftView.datasource = self.levelTwoGiftList; self.textField.text = @"10"; [self handleGiftDatasource:self.levelTwoGiftList giftId:giftInfo.giftId]; } else { @@ -250,6 +249,14 @@ [self.giftView configDefaultInfo:giftInfo]; } else { self.giftInfo = info; + [self.giftView configDefaultInfo:info]; + if (self.levleInfo.level == WishGiftLevel_Normal) { + [self handleGiftDatasource:self.levelOneGiftList giftId:info.giftId]; + } else if (self.levleInfo.level == WishGiftLevel_Middle) { + [self handleGiftDatasource:self.levelTwoGiftList giftId:info.giftId]; + } else { + [self handleGiftDatasource:self.levelThirdGiftList giftId:info.giftId]; + } } } @@ -314,13 +321,13 @@ #pragma mark - Event Response - (void)sureButtonAction:(UIButton *)sender { if (![self canSubtractMinCount:self.number]) { - NSString * toast = [NSString stringWithFormat:@"物数量范围需为%d~%d", [self subtractMinCount], [self addMaxCount]]; + NSString * toast = [NSString stringWithFormat:@"礼物数量范围需为%d~%d", [self subtractMinCount], [self addMaxCount]]; [self showErrorToast:toast]; self.textField.text = [NSString stringWithFormat:@"%d", [self subtractMinCount]]; self.number = [self subtractMinCount]; return; } else if(![self canAddMaxCount:self.number]){ - NSString * toast = [NSString stringWithFormat:@"物数量范围需为%d~%d", [self subtractMinCount], [self addMaxCount]]; + NSString * toast = [NSString stringWithFormat:@"礼物数量范围需为%d~%d", [self subtractMinCount], [self addMaxCount]]; [self showErrorToast:toast]; self.textField.text = [NSString stringWithFormat:@"%d", [self addMaxCount]]; self.number = [self addMaxCount]; diff --git a/xplan-ios/Main/Room/View/WishGift/View/XPWishGiftCreateViewController.m b/xplan-ios/Main/Room/View/WishGift/View/XPWishGiftCreateViewController.m index 21c3246b..e1eb7b07 100644 --- a/xplan-ios/Main/Room/View/WishGift/View/XPWishGiftCreateViewController.m +++ b/xplan-ios/Main/Room/View/WishGift/View/XPWishGiftCreateViewController.m @@ -242,14 +242,18 @@ } - (void)createButtonAction:(UIButton *)sender { - TTAlertConfig * config = [[TTAlertConfig alloc] init]; - config.title = @""; - config.message = @"确认创建当前心愿? \n创建后当日不可在编辑或删除"; - [TTPopup alertWithConfig:config confirmHandler:^{ - [self.presenter addWishGift:self.roomUid]; - } cancelHandler:^{ + if (self.datasource.count > 0) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = @"确认创建当前心愿? \n创建后当日不可在编辑或删除"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter addWishGift:self.roomUid]; + } cancelHandler:^{ - }]; + }]; + } else { + [self showErrorToast:@"至少需要添加一个心愿礼物"]; + } } #pragma mark - Getters And Setters diff --git a/xplan-ios/Main/Room/View/XPRoomViewController.m b/xplan-ios/Main/Room/View/XPRoomViewController.m index ef4875ff..0dbdfcf1 100644 --- a/xplan-ios/Main/Room/View/XPRoomViewController.m +++ b/xplan-ios/Main/Room/View/XPRoomViewController.m @@ -178,13 +178,13 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 /// @param giftId 礼物id /// @param viewController 启动方 + (BOOL)openRoom:(NSString *)roomUid giftId:(NSString *)giftId viewController:(UIViewController *)viewController { - XPRoomViewController * roomVC = [[self alloc] init]; - roomVC.roomUid = roomUid; - roomVC.giftId = giftId; - BaseNavigationController * baseNav = [[BaseNavigationController alloc] initWithRootViewController:roomVC]; - baseNav.modalPresentationStyle = UIModalPresentationFullScreen; - [viewController presentViewController:baseNav animated:YES completion:nil]; - return YES; + XPRoomViewController * roomVC = [[self alloc] init]; + roomVC.roomUid = roomUid; + roomVC.giftId = giftId; + BaseNavigationController * baseNav = [[BaseNavigationController alloc] initWithRootViewController:roomVC]; + baseNav.modalPresentationStyle = UIModalPresentationFullScreen; + [viewController presentViewController:baseNav animated:YES completion:nil]; + return YES; } - (void)dealloc { @@ -198,18 +198,18 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } - (XPRoomPresenter *)createPresenter { - return [[XPRoomPresenter alloc] init]; + return [[XPRoomPresenter alloc] init]; } - (BOOL)isHiddenNavBar { - return YES; + return YES; } - (void)viewDidLoad { [super viewDidLoad]; [self exitOldRoom]; - [self initSubViews]; - [self initSubViewConstraints]; + [self initSubViews]; + [self initSubViewConstraints]; if (self.isMiniEnter) { [self initEnterRoomSuccess:[XPRoomMiniManager shareManager].getRoomInfo user:[XPRoomMiniManager shareManager].getUserInfo]; } else { @@ -222,7 +222,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [self.presenter getRoomSuperAdmin:self.roomUid]; //监听云信消息x [[NIMSDK sharedSDK].chatroomManager addDelegate:self]; - [[NIMSDK sharedSDK].chatManager addDelegate:self]; + [[NIMSDK sharedSDK].chatManager addDelegate:self]; [[NIMSDK sharedSDK].loginManager addDelegate:self]; [[NIMSDK sharedSDK].conversationManager addDelegate:self]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myGiftEffectUpdate:) name:kRoomGiftEffectUpdateNotificationKey object:nil]; @@ -234,71 +234,71 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; + [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; } #pragma mark - Private Method - (void)initSubViews { - [self.view addSubview:self.backContainerView]; + [self.view addSubview:self.backContainerView]; [self.view addSubview:self.littleGameView]; - [self.view addSubview:self.stageView]; - [self.view addSubview:self.messageContainerView]; - [self.view addSubview:self.quickMessageContainerView]; - [self.view addSubview:self.menuContainerView]; - [self.view addSubview:self.activityContainerView]; + [self.view addSubview:self.stageView]; + [self.view addSubview:self.messageContainerView]; + [self.view addSubview:self.quickMessageContainerView]; + [self.view addSubview:self.menuContainerView]; + [self.view addSubview:self.activityContainerView]; [self.view addSubview:self.roomHeaderView]; [self.view addSubview:self.functionView]; [self.view addSubview:self.animationView]; } - (void)initSubViewConstraints { - [self.backContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - - [self.roomHeaderView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.stageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.roomHeaderView.mas_bottom); + [self.backContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + + [self.roomHeaderView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.stageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.roomHeaderView.mas_bottom); make.height.mas_equalTo(self.stageView.hightForStageView); - }]; - - [self.messageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.stageView.mas_bottom); - make.bottom.equalTo(self.quickMessageContainerView.mas_top).offset(-5); - make.left.equalTo(self.view); - make.right.equalTo(self.activityContainerView.mas_left).offset(-10); - }]; - CGFloat quickMsgHeight = 30; - //记录最后关闭时间 - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSNumber *closeCount = [defaults objectForKey:kRoomQuickMessageCloseCount]; + }]; + + [self.messageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.stageView.mas_bottom); + make.bottom.equalTo(self.quickMessageContainerView.mas_top).offset(-5); + make.left.equalTo(self.view); + make.right.equalTo(self.activityContainerView.mas_left).offset(-10); + }]; + CGFloat quickMsgHeight = 30; + //记录最后关闭时间 + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSNumber *closeCount = [defaults objectForKey:kRoomQuickMessageCloseCount]; if (closeCount.intValue > 3) { quickMsgHeight = 0; } else { quickMsgHeight = 30; } - [self.quickMessageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.menuContainerView.mas_top); - make.height.mas_equalTo(quickMsgHeight); - make.left.right.mas_equalTo(self.view); - }]; - [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(-kSafeAreaBottomHeight- 8); - make.height.mas_equalTo(40); - }]; - - [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.messageContainerView); - make.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5); - make.width.mas_equalTo(80); - }]; + [self.quickMessageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.menuContainerView.mas_top); + make.height.mas_equalTo(quickMsgHeight); + make.left.right.mas_equalTo(self.view); + }]; + [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(-kSafeAreaBottomHeight- 8); + make.height.mas_equalTo(40); + }]; + + [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.messageContainerView); + make.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5); + make.width.mas_equalTo(80); + }]; [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.mas_equalTo(self.view); @@ -314,47 +314,47 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } - (void)updateViewConstraintsOnAnchorRoom { - [self.anchorScrollView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - [self.backContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.anchorScrollView.middleImageView); - }]; - [self.roomHeaderView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.anchorScrollView.middleImageView); - make.height.mas_equalTo(kNavigationHeight); - }]; - [self.stageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); - make.top.mas_equalTo(self.roomHeaderView.mas_bottom); - make.height.mas_equalTo(self.stageView.hightForStageView); - }]; - [self.messageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.stageView.mas_bottom); - make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); - make.left.equalTo(self.anchorScrollView.middleImageView); - make.right.equalTo(self.activityContainerView.mas_left).offset(-10); - }]; - [self.quickMessageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.stageView.mas_bottom); - make.bottom.mas_equalTo(self.backContainerView).mas_offset(-5-40-8-kSafeAreaBottomHeight); - make.left.equalTo(self.anchorScrollView.middleImageView); - make.right.equalTo(self.activityContainerView.mas_left).offset(-10); - }]; - [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); - make.bottom.mas_equalTo(self.anchorScrollView.middleImageView).offset(-kSafeAreaBottomHeight- 8); - make.height.mas_equalTo(40); - }]; - [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.messageContainerView); - make.right.mas_equalTo(self.anchorScrollView.middleImageView); - make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); - make.width.mas_equalTo(80); - }]; - [self.functionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.anchorScrollView.middleImageView); - }]; + [self.anchorScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + [self.backContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.anchorScrollView.middleImageView); + }]; + [self.roomHeaderView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.anchorScrollView.middleImageView); + make.height.mas_equalTo(kNavigationHeight); + }]; + [self.stageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.top.mas_equalTo(self.roomHeaderView.mas_bottom); + make.height.mas_equalTo(self.stageView.hightForStageView); + }]; + [self.messageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.stageView.mas_bottom); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); + make.left.equalTo(self.anchorScrollView.middleImageView); + make.right.equalTo(self.activityContainerView.mas_left).offset(-10); + }]; + [self.quickMessageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.bottom.mas_equalTo(self.backContainerView).mas_offset(-5-40-8-kSafeAreaBottomHeight); + make.left.equalTo(self.anchorScrollView.middleImageView); + make.right.equalTo(self.activityContainerView.mas_left).offset(-10); + }]; + [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.bottom.mas_equalTo(self.anchorScrollView.middleImageView).offset(-kSafeAreaBottomHeight- 8); + make.height.mas_equalTo(40); + }]; + [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.messageContainerView); + make.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); + make.width.mas_equalTo(80); + }]; + [self.functionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.anchorScrollView.middleImageView); + }]; } - (void)exitOldRoom { @@ -365,37 +365,37 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [self.presenter exitNIMRoom:roomId]; [[RtcManager instance] exitRoom]; [[XPRoomMiniManager shareManager] resetLocalMessage]; - [self.presenter reportUserOutRoom:roomUid]; + [self.presenter reportUserOutRoom:roomUid]; } } - (void)userEnterRoomSuccess { - AttachmentModel *attachment = [[AttachmentModel alloc]init]; - attachment.first = CustomMessageType_Car_Notify; - attachment.second = Custom_Message_Sub_Car_EnterRoom; - NSMutableDictionary *att = [NSMutableDictionary dictionary]; - if (self.userInfo.userVipInfoVO.enterHide) {///贵族隐身进房,不发座驾消息 - return; - } - if (self.userInfo.viewUrl.length > 0) { - [att setValue:self.userInfo.nick forKey:@"nick"]; - [att setValue:self.userInfo.viewUrl forKey:@"viewUrl"]; - [att setValue:@(self.userInfo.otherViewType) forKey:@"otherViewType"]; - } else if (self.userInfo.carEffect.length > 0) { + AttachmentModel *attachment = [[AttachmentModel alloc]init]; + attachment.first = CustomMessageType_Car_Notify; + attachment.second = Custom_Message_Sub_Car_EnterRoom; + NSMutableDictionary *att = [NSMutableDictionary dictionary]; + if (self.userInfo.userVipInfoVO.enterHide) {///贵族隐身进房,不发座驾消息 + return; + } + if (self.userInfo.viewUrl.length > 0) { + [att setValue:self.userInfo.nick forKey:@"nick"]; + [att setValue:self.userInfo.viewUrl forKey:@"viewUrl"]; + [att setValue:@(self.userInfo.otherViewType) forKey:@"otherViewType"]; + } else if (self.userInfo.carEffect.length > 0) { [att setValue:self.userInfo.carEffect forKey:@"effect"]; [att setValue:self.userInfo.nick forKey:@"nick"]; - } else { - return; - } - attachment.data = att; - NSString *sessionID = [NSString stringWithFormat:@"%ld",self.roomInfo.roomId]; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - //构造会话 - NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } else { + return; + } + attachment.data = att; + NSString *sessionID = [NSString stringWithFormat:@"%ld",self.roomInfo.roomId]; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; } - (void)changeStageViewOnRoomUpdate { @@ -408,38 +408,38 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 self.stageView = nil; self.stageView = [[SocialStageView alloc] initWithDelegate:self]; } else if (self.roomInfo.type == RoomType_Anchor) { - if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode && ![self.stageView isKindOfClass:[AnchorPKStageView class]]) { - [self.stageView removeFromSuperview]; - self.stageView = nil; - self.stageView = [[AnchorPKStageView alloc] initWithDelegate:self]; - } else if(self.roomInfo.roomModeType == RoomModeType_Normal_Mode && ![self.stageView isKindOfClass:[AnchorStageView class]]) { - [self.stageView removeFromSuperview]; - self.stageView = nil; - self.stageView = [[AnchorStageView alloc] initWithDelegate:self]; - } - } else if(self.roomInfo.type == RoomType_MiniGame) { - if (self.roomInfo.mgMicNum > 6 && ![self.stageView isKindOfClass:[LittleGameScrollStageView class]]) { - [self.stageView removeFromSuperview]; - self.stageView = nil; - self.stageView = [[LittleGameScrollStageView alloc] initWithDelegate:self]; - } else if (self.roomInfo.mgMicNum <= 6 && ![self.stageView isKindOfClass:[LittleGameStageView class]]) { - [self.stageView removeFromSuperview]; - self.stageView = nil; - self.stageView = [[LittleGameStageView alloc] initWithDelegate:self]; - } + if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode && ![self.stageView isKindOfClass:[AnchorPKStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[AnchorPKStageView alloc] initWithDelegate:self]; + } else if(self.roomInfo.roomModeType == RoomModeType_Normal_Mode && ![self.stageView isKindOfClass:[AnchorStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[AnchorStageView alloc] initWithDelegate:self]; + } + } else if(self.roomInfo.type == RoomType_MiniGame) { + if (self.roomInfo.mgMicNum > 6 && ![self.stageView isKindOfClass:[LittleGameScrollStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[LittleGameScrollStageView alloc] initWithDelegate:self]; + } else if (self.roomInfo.mgMicNum <= 6 && ![self.stageView isKindOfClass:[LittleGameStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[LittleGameStageView alloc] initWithDelegate:self]; + } }else if(self.roomInfo.hadChangeRoomType && ![self.stageView isKindOfClass:[SocialStageView class]]) { - [self.stageView removeFromSuperview]; - self.stageView = nil; - self.stageView = [[SocialStageView alloc] initWithDelegate:self]; - } else { - return; - } + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[SocialStageView alloc] initWithDelegate:self]; + } else { + return; + } if (!self.stageView.superview) { [self.view insertSubview:self.stageView belowSubview:self.roomHeaderView]; } - + if (self.roomInfo.type == RoomType_MiniGame) { [self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) { @@ -485,51 +485,52 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } - (void)changeStageViewOnAnchorRoom { - if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode && ![self.stageView isKindOfClass:[AnchorPKStageView class]]) { - [self.stageView removeFromSuperview]; - self.stageView = nil; - self.stageView = [[AnchorPKStageView alloc] initWithDelegate:self]; - } else if(self.roomInfo.roomModeType == RoomModeType_Normal_Mode && ![self.stageView isKindOfClass:[AnchorStageView class]]) { - [self.stageView removeFromSuperview]; - self.stageView = nil; - self.stageView = [[AnchorStageView alloc] initWithDelegate:self]; - } - if (!self.stageView.superview) { - [self.anchorScrollView insertSubview:self.stageView belowSubview:self.roomHeaderView]; - } + if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode && ![self.stageView isKindOfClass:[AnchorPKStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[AnchorPKStageView alloc] initWithDelegate:self]; + } else if(self.roomInfo.roomModeType == RoomModeType_Normal_Mode && ![self.stageView isKindOfClass:[AnchorStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[AnchorStageView alloc] initWithDelegate:self]; + } + if (!self.stageView.superview) { + [self.anchorScrollView insertSubview:self.stageView belowSubview:self.roomHeaderView]; + } - [self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); - make.top.mas_equalTo(self.roomHeaderView.mas_bottom); - make.height.mas_equalTo(self.stageView.hightForStageView); - }]; - [self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.stageView.mas_bottom); - make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); - make.left.mas_equalTo(self.anchorScrollView.middleImageView); - make.right.mas_equalTo(self.activityContainerView.mas_left).offset(-10); - }]; + [self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.top.mas_equalTo(self.roomHeaderView.mas_bottom); + make.height.mas_equalTo(self.stageView.hightForStageView); + }]; + [self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.stageView.mas_bottom); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); + make.left.mas_equalTo(self.anchorScrollView.middleImageView); + make.right.mas_equalTo(self.activityContainerView.mas_left).offset(-10); + }]; CGFloat quickMsgHeight = 30; //记录最后关闭时间 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSNumber *closeCount = [defaults objectForKey:kRoomQuickMessageCloseCount]; - if (closeCount.intValue > 3) { + if (closeCount.intValue > 3 || self.roomInfo.speakTemplate.count <=0) { quickMsgHeight = 0; } else { quickMsgHeight = 30; } - [self.quickMessageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(quickMsgHeight); - make.bottom.mas_equalTo(self.backContainerView).mas_offset(-5-40-8-kSafeAreaBottomHeight); - make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); - }]; - [self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.messageContainerView); - make.right.mas_equalTo(self.anchorScrollView.middleImageView); - make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); - make.width.mas_equalTo(80); - }]; + self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate; + [self.quickMessageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(quickMsgHeight); + make.bottom.mas_equalTo(self.backContainerView).mas_offset(-5-40-8-kSafeAreaBottomHeight); + make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); + }]; + [self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.messageContainerView); + make.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); + make.width.mas_equalTo(80); + }]; } - (void)cancelRoomArrangeMic { @@ -624,106 +625,106 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 ///超管进个播有密码房间 - (void)handleSuperManagerEnterAnchorRoom:(RoomInfoModel *)roomInfo { - __block BOOL isSuperAdmin = NO; - [self.superMangerList enumerateObjectsUsingBlock:^(GuildSuperAdminInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.uid isEqualToString:[AccountInfoStorage instance].getUid]) { - isSuperAdmin = YES; - *stop = YES; - } - }]; - if (!isSuperAdmin) { - XPRoomSettingInputView * titleView = [[XPRoomSettingInputView alloc] init]; - titleView.maxCount = 15; - titleView.delegate = self; - titleView.type = RoomSettingInputType_Input_Pwd; - TTPopupConfig * config = [[TTPopupConfig alloc] init]; - config.contentView = titleView; - config.maskBackgroundAlpha = 1; - config.shouldDismissOnBackgroundTouch = NO; - [TTPopup popupWithConfig:config]; - } else { - self.roomInfo.datingState = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal; - if (!self.anchorScrollView.superview) { - [self.view insertSubview:self.anchorScrollView belowSubview:self.menuContainerView]; - } - [self.backContainerView removeFromSuperview]; - [self.stageView removeFromSuperview]; - [self.messageContainerView removeFromSuperview]; - [self.quickMessageContainerView removeFromSuperview]; - [self.activityContainerView removeFromSuperview]; - [self.roomHeaderView removeFromSuperview]; - [self.functionView removeFromSuperview]; + __block BOOL isSuperAdmin = NO; + [self.superMangerList enumerateObjectsUsingBlock:^(GuildSuperAdminInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + isSuperAdmin = YES; + *stop = YES; + } + }]; + if (!isSuperAdmin) { + XPRoomSettingInputView * titleView = [[XPRoomSettingInputView alloc] init]; + titleView.maxCount = 15; + titleView.delegate = self; + titleView.type = RoomSettingInputType_Input_Pwd; + TTPopupConfig * config = [[TTPopupConfig alloc] init]; + config.contentView = titleView; + config.maskBackgroundAlpha = 1; + config.shouldDismissOnBackgroundTouch = NO; + [TTPopup popupWithConfig:config]; + } else { + self.roomInfo.datingState = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal; + if (!self.anchorScrollView.superview) { + [self.view insertSubview:self.anchorScrollView belowSubview:self.menuContainerView]; + } + [self.backContainerView removeFromSuperview]; + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; - [self.anchorScrollView addSubview:self.backContainerView]; - [self.anchorScrollView addSubview:self.stageView]; - [self.anchorScrollView addSubview:self.messageContainerView]; - [self.anchorScrollView addSubview:self.quickMessageContainerView]; - [self.anchorScrollView addSubview:self.activityContainerView]; - [self.anchorScrollView addSubview:self.roomHeaderView]; - [self.anchorScrollView addSubview:self.functionView]; - if (!self.menuContainerView.superview) { - [self.view addSubview:self.menuContainerView]; - } + [self.anchorScrollView addSubview:self.backContainerView]; + [self.anchorScrollView addSubview:self.stageView]; + [self.anchorScrollView addSubview:self.messageContainerView]; + [self.anchorScrollView addSubview:self.quickMessageContainerView]; + [self.anchorScrollView addSubview:self.activityContainerView]; + [self.anchorScrollView addSubview:self.roomHeaderView]; + [self.anchorScrollView addSubview:self.functionView]; + if (!self.menuContainerView.superview) { + [self.view addSubview:self.menuContainerView]; + } [self.view bringSubviewToFront:self.animationView]; - [self updateViewConstraintsOnAnchorRoom]; - [self changeStageViewOnAnchorRoom]; + [self updateViewConstraintsOnAnchorRoom]; + [self changeStageViewOnAnchorRoom]; - [self.roomHeaderView onRoomEntered]; - [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; - [self.backContainerView onRoomEntered]; - [self.littleGameView onRoomEntered]; - if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 - [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.functionView onRoomEntered]; - [self.messageContainerView onRoomEntered]; - } else { - //虽然没退出房间 但是队列还是要拿的 - [self.stageView onRoomMiniEntered]; - [self.messageContainerView onRoomMiniEntered]; - [self.functionView onRoomMiniEntered]; - [self.functionView onRoomEntered]; - } - [[XPRoomMiniManager shareManager] configRoomInfo:nil]; - [[XPRoomMiniManager shareManager] configUserInfo:nil]; - [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; - } + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; + [self.littleGameView onRoomEntered]; + if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.functionView onRoomEntered]; + [self.messageContainerView onRoomEntered]; + } else { + //虽然没退出房间 但是队列还是要拿的 + [self.stageView onRoomMiniEntered]; + [self.messageContainerView onRoomMiniEntered]; + [self.functionView onRoomMiniEntered]; + [self.functionView onRoomEntered]; + } + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } } ///展示个播上划引导 - (void)showAnchorScrollTipView { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString *anchoScrollTip = [defaults objectForKey:kHadShowAnchorRoomTipKey]; - if (!anchoScrollTip) { - UIWindow *window = [UIApplication sharedApplication].delegate.window; - [window addSubview:self.anchorScrollTipView]; - [window bringSubviewToFront:self.anchorScrollTipView]; - } + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *anchoScrollTip = [defaults objectForKey:kHadShowAnchorRoomTipKey]; + if (!anchoScrollTip) { + UIWindow *window = [UIApplication sharedApplication].delegate.window; + [window addSubview:self.anchorScrollTipView]; + [window bringSubviewToFront:self.anchorScrollTipView]; + } } ///判断是否被踢出房间 - (BOOL)isKictOutLatest:(RoomInfoModel *)roomInfo { - NSString *currentUid = [AccountInfoStorage instance].getUid; - NSString *key = [NSString stringWithFormat:@"%@_%ld", currentUid, roomInfo.uid]; - NSString *kictOutTime = [[NSUserDefaults standardUserDefaults] objectForKey:key]; - if (kictOutTime) { - NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0]; - NSTimeInterval time = [date timeIntervalSince1970]; - NSString *currentTime = [NSString stringWithFormat:@"%.0f", time]; - //是否超过5分钟 - if ([currentTime intValue] - [kictOutTime intValue] > 5 * 60) { - [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; - [[NSUserDefaults standardUserDefaults] synchronize]; - return NO; - } else { - [XCHUDTool showErrorWithMessage:@"抱歉,您暂时无法进入该房间"]; - [self dismissViewControllerAnimated:YES completion:nil]; - return YES; - } - } else { - return NO; - } + NSString *currentUid = [AccountInfoStorage instance].getUid; + NSString *key = [NSString stringWithFormat:@"%@_%ld", currentUid, roomInfo.uid]; + NSString *kictOutTime = [[NSUserDefaults standardUserDefaults] objectForKey:key]; + if (kictOutTime) { + NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0]; + NSTimeInterval time = [date timeIntervalSince1970]; + NSString *currentTime = [NSString stringWithFormat:@"%.0f", time]; + //是否超过5分钟 + if ([currentTime intValue] - [kictOutTime intValue] > 5 * 60) { + [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; + return NO; + } else { + [XCHUDTool showErrorWithMessage:@"抱歉,您暂时无法进入该房间"]; + [self dismissViewControllerAnimated:YES completion:nil]; + return YES; + } + } else { + return NO; + } } #pragma mark - 本地礼物特效更新 @@ -740,18 +741,18 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 userInfo.fromType = self.fromType; userInfo.fromNick = self.fromNick; self.hasAnimationEffect = roomInfo.hasAnimationEffect; - self.roomInfo = roomInfo; - self.userInfo = userInfo; - //判断5分钟内是否被踢出过房间 - if ([self isKictOutLatest:roomInfo]) { - return; - } - if (roomInfo.type == RoomType_Anchor) {//个播房,获取下一个房间 - [self handleInitAnchorRoom]; - [self showAnchorScrollTipView]; - return; - } - if (roomInfo.valid) { // 房间有效,直接进入房间 + self.roomInfo = roomInfo; + self.userInfo = userInfo; + //判断5分钟内是否被踢出过房间 + if ([self isKictOutLatest:roomInfo]) { + return; + } + if (roomInfo.type == RoomType_Anchor) {//个播房,获取下一个房间 + [self handleInitAnchorRoom]; + [self showAnchorScrollTipView]; + return; + } + if (roomInfo.valid) { // 房间有效,直接进入房间 if (roomInfo.roomPwd.length > 0 && roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue && [XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {//进房密码的情况 if (!self.isRequestSuperAdmin) { [Api getRoomSuperAdminList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { @@ -764,17 +765,18 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } } else { self.roomInfo.datingState = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal; - [self changeStageViewOnRoomUpdate]; - [self.roomHeaderView onRoomEntered]; - [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; - [self.backContainerView onRoomEntered]; + [self changeStageViewOnRoomUpdate]; + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; [self.littleGameView onRoomEntered]; - if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 - [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.functionView onRoomEntered]; + self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate; + if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.functionView onRoomEntered]; [self.messageContainerView onRoomEntered]; - } else { + } else { //虽然没退出房间 但是队列还是要拿的 [self.stageView onRoomMiniEntered]; [self.messageContainerView onRoomMiniEntered]; @@ -785,73 +787,74 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [[XPRoomMiniManager shareManager] configUserInfo:nil]; [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; } - } else { // 房间无效,分是否为自己房间进行处理 - if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) { // 当前用户进入自己房间 - if (roomInfo.roomId > 0) { // 存在房间信息,直接使用房间信息开房 + } else { // 房间无效,分是否为自己房间进行处理 + if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) { // 当前用户进入自己房间 + if (roomInfo.roomId > 0) { // 存在房间信息,直接使用房间信息开房 if (roomInfo.type == RoomType_MiniGame && roomInfo.mgId > 0) { self.mgId = [NSString stringWithFormat:@"%lld", roomInfo.mgId]; } - [self.presenter openRoom:roomInfo.title type:roomInfo.type roomPwd:roomInfo.roomPwd roomDesc:roomInfo.roomDesc backPic:@"" mgId:self.mgId]; - } else { // 不存在房间信息,全新开房 - NSString* title = [NSString stringWithFormat:@"%@的房间", userInfo.nick]; + [self.presenter openRoom:roomInfo.title type:roomInfo.type roomPwd:roomInfo.roomPwd roomDesc:roomInfo.roomDesc backPic:@"" mgId:self.mgId]; + } else { // 不存在房间信息,全新开房 + NSString* title = [NSString stringWithFormat:@"%@的房间", userInfo.nick]; RoomType type = RoomType_Game; if (self.mgId.length > 0) { type = RoomType_MiniGame; } - [self.presenter openRoom:title type:type roomPwd:@"" roomDesc:@"" backPic:@"" mgId:self.mgId]; - } - } else { // 当前用户进入别人房间 - // TODO: 房主已经下线。 - [self showSuccessToast:@"房主已下线"]; + [self.presenter openRoom:title type:type roomPwd:@"" roomDesc:@"" backPic:@"" mgId:self.mgId]; + } + } else { // 当前用户进入别人房间 + // TODO: 房主已经下线。 + [self showSuccessToast:@"房主已下线"]; [self enterRoomFail:0]; - } - } + } + } } - (void)openRoomSuccess:(RoomInfoModel *)roomInfo { [XCHUDTool hideHUDInView:self.navigationController.view]; [self hideHUD]; - self.roomInfo = roomInfo; - if (roomInfo.type == RoomType_Anchor) { - [self handleInitAnchorRoom]; - [self showAnchorScrollTipView]; - return; - } + self.roomInfo = roomInfo; + if (roomInfo.type == RoomType_Anchor) { + [self handleInitAnchorRoom]; + [self showAnchorScrollTipView]; + return; + } [self changeStageViewOnRoomUpdate]; - [self.roomHeaderView onRoomEntered]; + [self.roomHeaderView onRoomEntered]; [self.activityContainerView onRoomEntered]; - [self.backContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; [self.littleGameView onRoomEntered]; [self.functionView onRoomEntered]; [self.messageContainerView onRoomEntered]; - [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate; + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; } - (void)enterRoomSuccess:(NIMChatroom *)chatRoom { [XCHUDTool hideHUDInView:self.navigationController.view]; // room/get中的房间在线人数 是定时更新的 不是及时刷新 self.roomInfo.onlineNum = chatRoom.onlineUserCount; - [self.stageView onRoomEntered]; + [self.stageView onRoomEntered]; [self.functionView onRoomEntered]; - //上报进房 - if (self.roomInfo != nil) { - [self.presenter reportUserInterRoom:[NSString stringWithFormat:@"%zd", self.roomInfo.uid]]; - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventuser_visit_room eventAttributes:@{@"roomUid" : @(self.roomInfo.uid)}]; - } - if (self.giftId.length) { - [[NSNotificationCenter defaultCenter] postNotificationName:@"kShowGiftView" object:@{@"giftId": self.giftId}]; - } - //获取一下红包信息 - [self.presenter getRedPacket:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + //上报进房 + if (self.roomInfo != nil) { + [self.presenter reportUserInterRoom:[NSString stringWithFormat:@"%zd", self.roomInfo.uid]]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventuser_visit_room eventAttributes:@{@"roomUid" : @(self.roomInfo.uid)}]; + } + if (self.giftId.length) { + [[NSNotificationCenter defaultCenter] postNotificationName:@"kShowGiftView" object:@{@"giftId": self.giftId}]; + } + //获取一下红包信息 + [self.presenter getRedPacket:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; } - (void)enterRoomFail:(NSInteger)code { [XCHUDTool hideHUDInView:self.navigationController.view]; - [self hideHUD]; + [self hideHUD]; if (code == 13003) { - [self showErrorToast:@"您已被管理员拉黑"]; + [self showErrorToast:@"您已被管理员拉黑"]; } - [self dismissViewControllerAnimated:YES completion:nil]; + [self dismissViewControllerAnimated:YES completion:nil]; } ///请求房间超管成功 @@ -863,49 +866,49 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 ///获取推荐滚动的个播房列表(只有第一次进房获取) - (void)getNextAnchorRoomSuccess:(RoomInfoModel *)roomInfo { - [self hideHUD]; - if (roomInfo) { //获取下一个房间成功 + [self hideHUD]; + if (roomInfo) { //获取下一个房间成功 if (![self.anchorRoomList containsObject:self.roomUid]) { [self.anchorRoomList addObject:self.roomUid]; } self.anchorIndex = self.anchorRoomList.count -1; - //1、退出房间操作 + //1、退出房间操作 self.anchorScrollView.isCanScrollTop = YES; self.anchorScrollView.contentOffset = CGPointMake(0, KScreenHeight); - self.isRequestSuperAdmin = NO; - [self exitOldRoom]; - [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[XPRoomMiniManager shareManager] resetLocalMessage]; - [[RtcManager instance] exitRoom]; - [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + self.isRequestSuperAdmin = NO; + [self exitOldRoom]; + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; [self.functionView onRoomChange]; - //2、移除房间子控件 - [self.stageView removeFromSuperview]; - [self.messageContainerView removeFromSuperview]; - [self.quickMessageContainerView removeFromSuperview]; - [self.activityContainerView removeFromSuperview]; - [self.roomHeaderView removeFromSuperview]; - [self.functionView removeFromSuperview]; - self.functionView = nil; - self.messageContainerView = nil; - self.stageView = nil; - [self.menuContainerView removeFromSuperview]; - self.menuContainerView = nil; - //3、重新进入房间 - self.roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; - [self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid]; - /// 公屏 福袋礼物爆出的礼物 需要依赖 当前房间中的礼物列表 需要提前获取礼物列表 可以拿到礼物 没有想到别的方法去解决这个问题 有需要改的在修改吧 - [self.presenter getNormalGiftList:self.roomUid]; - ///获取房间超管列表 - [self.presenter getRoomSuperAdmin:self.roomUid]; - } else { + //2、移除房间子控件 + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + self.functionView = nil; + self.messageContainerView = nil; + self.stageView = nil; + [self.menuContainerView removeFromSuperview]; + self.menuContainerView = nil; + //3、重新进入房间 + self.roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; + [self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid]; + /// 公屏 福袋礼物爆出的礼物 需要依赖 当前房间中的礼物列表 需要提前获取礼物列表 可以拿到礼物 没有想到别的方法去解决这个问题 有需要改的在修改吧 + [self.presenter getNormalGiftList:self.roomUid]; + ///获取房间超管列表 + [self.presenter getRoomSuperAdmin:self.roomUid]; + } else { if (self.anchorScrollView.isCanScrollTop) { self.anchorScrollView.contentOffset = CGPointMake(0, KScreenHeight); } else { self.anchorScrollView.contentOffset = CGPointMake(0, 0); } - [self showErrorToast:@"已经到底啦~自动为您返回当前房间"]; - } + [self showErrorToast:@"已经到底啦~自动为您返回当前房间"]; + } } - (void)getCurrentRoomInfoSuccess:(RoomInfoModel *)roomInfo { @@ -923,7 +926,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [self.backContainerView removeFromSuperview]; [self.stageView removeFromSuperview]; [self.messageContainerView removeFromSuperview]; - [self.quickMessageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; [self.activityContainerView removeFromSuperview]; [self.roomHeaderView removeFromSuperview]; [self.functionView removeFromSuperview]; @@ -946,124 +949,124 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 ///个播房初始化一些操作 - (void)handleInitAnchorRoom { - if (self.roomInfo.valid) { // 房间有效,直接进入房间 - if (self.roomInfo.roomPwd.length > 0 && self.roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue && [XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {//进房密码的情况 - if (!self.isRequestSuperAdmin) { - [Api getRoomSuperAdminList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { - NSArray * array = [GuildSuperAdminInfoModel modelsWithArray:data.data]; - self.superMangerList = array; - [self handleSuperManagerEnterAnchorRoom:self.roomInfo]; - } roomUid:self.roomUid]; - } else { - [self handleSuperManagerEnterAnchorRoom:self.roomInfo]; - } - } else { - self.roomInfo.datingState = self.roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal; - if (!self.anchorScrollView.superview) { - [self.view addSubview:self.anchorScrollView]; - } - [self.backContainerView removeFromSuperview]; - [self.stageView removeFromSuperview]; - [self.messageContainerView removeFromSuperview]; - [self.quickMessageContainerView removeFromSuperview]; - [self.activityContainerView removeFromSuperview]; - [self.roomHeaderView removeFromSuperview]; - [self.functionView removeFromSuperview]; - [self.menuContainerView removeFromSuperview]; + if (self.roomInfo.valid) { // 房间有效,直接进入房间 + if (self.roomInfo.roomPwd.length > 0 && self.roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue && [XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {//进房密码的情况 + if (!self.isRequestSuperAdmin) { + [Api getRoomSuperAdminList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + NSArray * array = [GuildSuperAdminInfoModel modelsWithArray:data.data]; + self.superMangerList = array; + [self handleSuperManagerEnterAnchorRoom:self.roomInfo]; + } roomUid:self.roomUid]; + } else { + [self handleSuperManagerEnterAnchorRoom:self.roomInfo]; + } + } else { + self.roomInfo.datingState = self.roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal; + if (!self.anchorScrollView.superview) { + [self.view addSubview:self.anchorScrollView]; + } + [self.backContainerView removeFromSuperview]; + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + [self.menuContainerView removeFromSuperview]; - [self.anchorScrollView addSubview:self.backContainerView]; - [self.anchorScrollView addSubview:self.stageView]; - [self.anchorScrollView addSubview:self.messageContainerView]; - [self.anchorScrollView addSubview:self.quickMessageContainerView]; - [self.anchorScrollView addSubview:self.activityContainerView]; - [self.anchorScrollView addSubview:self.roomHeaderView]; - [self.anchorScrollView addSubview:self.functionView]; - [self.anchorScrollView addSubview:self.menuContainerView]; + [self.anchorScrollView addSubview:self.backContainerView]; + [self.anchorScrollView addSubview:self.stageView]; + [self.anchorScrollView addSubview:self.messageContainerView]; + [self.anchorScrollView addSubview:self.quickMessageContainerView]; + [self.anchorScrollView addSubview:self.activityContainerView]; + [self.anchorScrollView addSubview:self.roomHeaderView]; + [self.anchorScrollView addSubview:self.functionView]; + [self.anchorScrollView addSubview:self.menuContainerView]; [self.view bringSubviewToFront:self.animationView]; - [self updateViewConstraintsOnAnchorRoom]; - [self changeStageViewOnAnchorRoom]; - - [self.roomHeaderView onRoomEntered]; - [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; - [self.backContainerView onRoomEntered]; - [self.littleGameView onRoomEntered]; - if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 - [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.functionView onRoomEntered]; - [self.messageContainerView onRoomEntered]; - } else { - //虽然没退出房间 但是队列还是要拿的 - [self.stageView onRoomMiniEntered]; - [self.messageContainerView onRoomMiniEntered]; - [self.functionView onRoomMiniEntered]; - [self.functionView onRoomEntered]; - } - [[XPRoomMiniManager shareManager] configRoomInfo:nil]; - [[XPRoomMiniManager shareManager] configUserInfo:nil]; - [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; - } - } else { // 房间无效,分是否为自己房间进行处理 - if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", self.userInfo.uid]]) { // 当前用户进入自己房间 - if (self.roomInfo.roomId > 0) { // 存在房间信息,直接使用房间信息开房 - if (self.roomInfo.type == RoomType_MiniGame && self.roomInfo.mgId > 0) { - self.mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; - } - [self.presenter openRoom:self.roomInfo.title type:self.roomInfo.type roomPwd:self.roomInfo.roomPwd roomDesc:self.roomInfo.roomDesc backPic:@"" mgId:self.mgId]; - } else { // 不存在房间信息,全新开房 - NSString* title = [NSString stringWithFormat:@"%@的房间", self.userInfo.nick]; - RoomType type = RoomType_Game; - if (self.mgId.length > 0) { - type = RoomType_MiniGame; - } - [self.presenter openRoom:title type:type roomPwd:@"" roomDesc:@"" backPic:@"" mgId:self.mgId]; - } - } else { // 当前用户进入别人房间 - // TODO: 房主已经下线。 - [self showSuccessToast:@"房主已下线"]; - [self enterRoomFail:0]; - } - } + [self updateViewConstraintsOnAnchorRoom]; + [self changeStageViewOnAnchorRoom]; + + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; + [self.littleGameView onRoomEntered]; + if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.functionView onRoomEntered]; + [self.messageContainerView onRoomEntered]; + } else { + //虽然没退出房间 但是队列还是要拿的 + [self.stageView onRoomMiniEntered]; + [self.messageContainerView onRoomMiniEntered]; + [self.functionView onRoomMiniEntered]; + [self.functionView onRoomEntered]; + } + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } + } else { // 房间无效,分是否为自己房间进行处理 + if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", self.userInfo.uid]]) { // 当前用户进入自己房间 + if (self.roomInfo.roomId > 0) { // 存在房间信息,直接使用房间信息开房 + if (self.roomInfo.type == RoomType_MiniGame && self.roomInfo.mgId > 0) { + self.mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; + } + [self.presenter openRoom:self.roomInfo.title type:self.roomInfo.type roomPwd:self.roomInfo.roomPwd roomDesc:self.roomInfo.roomDesc backPic:@"" mgId:self.mgId]; + } else { // 不存在房间信息,全新开房 + NSString* title = [NSString stringWithFormat:@"%@的房间", self.userInfo.nick]; + RoomType type = RoomType_Game; + if (self.mgId.length > 0) { + type = RoomType_MiniGame; + } + [self.presenter openRoom:title type:type roomPwd:@"" roomDesc:@"" backPic:@"" mgId:self.mgId]; + } + } else { // 当前用户进入别人房间 + // TODO: 房主已经下线。 + [self showSuccessToast:@"房主已下线"]; + [self enterRoomFail:0]; + } + } } - (void)getRedPacketSuccess:(NSArray *)list { - if (list.count == 0) { - return; - } - for (XPRedPacketModel *data in list) { - XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - view.receiveModel = data; - for (UIView *subView in self.view.subviews) { - if([subView isKindOfClass:[XPReceiveRedPacketView class]]) { - view.alphaView.backgroundColor = [UIColor clearColor]; - break; - } - } - [self.view addSubview:view]; - [self.view bringSubviewToFront:view]; - } + if (list.count == 0) { + return; + } + for (XPRedPacketModel *data in list) { + XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + view.receiveModel = data; + for (UIView *subView in self.view.subviews) { + if([subView isKindOfClass:[XPReceiveRedPacketView class]]) { + view.alphaView.backgroundColor = [UIColor clearColor]; + break; + } + } + [self.view addSubview:view]; + [self.view bringSubviewToFront:view]; + } } #pragma mark - NIMChatroomManagerDelegate - (void)chatroomBeKicked:(NIMChatroomBeKickedResult *)result { if (result.reason == 2) { - [self showErrorToast:@"您被管理员踢出直播间"]; - ///保存被踢出时的时间 - NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];//获取当前时间0秒后的时间 - NSTimeInterval time=[date timeIntervalSince1970]; - NSString *currentTime = [NSString stringWithFormat:@"%.0f", time]; - NSString *key = [NSString stringWithFormat:@"%@_%ld", [AccountInfoStorage instance].getUid, self.roomInfo.uid]; - [[NSUserDefaults standardUserDefaults] setObject:currentTime forKey:key]; - [[NSUserDefaults standardUserDefaults] synchronize]; + [self showErrorToast:@"您被管理员踢出直播间"]; + ///保存被踢出时的时间 + NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];//获取当前时间0秒后的时间 + NSTimeInterval time=[date timeIntervalSince1970]; + NSString *currentTime = [NSString stringWithFormat:@"%.0f", time]; + NSString *key = [NSString stringWithFormat:@"%@_%ld", [AccountInfoStorage instance].getUid, self.roomInfo.uid]; + [[NSUserDefaults standardUserDefaults] setObject:currentTime forKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; } else if (result.reason == 5) { - [self showErrorToast:@"您已被管理员拉黑"]; + [self showErrorToast:@"您已被管理员拉黑"]; } [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; [[XPRoomMiniManager shareManager] resetLocalMessage]; [self cancelRoomArrangeMic]; [[RtcManager instance] exitRoom]; - [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; [self.littleGameView handleSelfInExitEvent]; [self.littleGameView destroyMG]; [self dismissViewControllerAnimated:YES completion:nil]; @@ -1071,7 +1074,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 #pragma mark - NIMChatManagerDelegate - (void)onRecvMessages:(NSArray *)messages { - for (NIMMessage * message in messages) { + for (NIMMessage * message in messages) { ///房间内收到p2p的消息 比如升级消息 if (message.session.sessionType == NIMSessionTypeP2P) { if(message.messageType == NIMMessageTypeCustom) { @@ -1090,29 +1093,29 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } } - // 非房间内消息不处理 - if (message.session.sessionType != NIMSessionTypeChatroom) { - continue; - } - - // 非本房间不处理 - if (![message.session.sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]) { - continue; - } - - if (message.messageType == NIMMessageTypeNotification) { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + // 非房间内消息不处理 + if (message.session.sessionType != NIMSessionTypeChatroom) { + continue; + } + + // 非本房间不处理 + if (![message.session.sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]) { + continue; + } + + if (message.messageType == NIMMessageTypeNotification) { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; NSInteger onLineNumber = self.roomInfo.onlineNum; - switch (content.eventType) { - case NIMChatroomEventTypeInfoUpdated: // 麦序状态更新 - { - NSDictionary *data = [content.notifyExt toJSONObject]; - int type = [data[@"type"] intValue]; - switch (type) { - case 1: - case 3: - { + switch (content.eventType) { + case NIMChatroomEventTypeInfoUpdated: // 麦序状态更新 + { + NSDictionary *data = [content.notifyExt toJSONObject]; + int type = [data[@"type"] intValue]; + switch (type) { + case 1: + case 3: + { NSMutableDictionary *lastRoomInfoDic = [NSMutableDictionary dictionaryWithDictionary:[self.roomInfo model2dictionary]]; [lastRoomInfoDic addEntriesFromDictionary: ((NSString *)data[@"roomInfo"]).toJSONObject]; RoomInfoModel *newRoomInfo = [RoomInfoModel modelWithJSON:lastRoomInfoDic]; @@ -1130,58 +1133,59 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } else { newRoomInfo.datingState = RoomDatingStateChangeType_Normal; } - //房间类型是否变更了(从个播->普通,个播->小游戏等) - newRoomInfo.hadChangeRoomType = self.roomInfo.type != newRoomInfo.type; - BOOL anchorToOther = newRoomInfo.type != RoomType_Anchor && self.roomInfo.type == RoomType_Anchor;//个播变其他房 + //房间类型是否变更了(从个播->普通,个播->小游戏等) + newRoomInfo.hadChangeRoomType = self.roomInfo.type != newRoomInfo.type; + BOOL anchorToOther = newRoomInfo.type != RoomType_Anchor && self.roomInfo.type == RoomType_Anchor;//个播变其他房 self.roomInfo = newRoomInfo; - [self.backContainerView onRoomUpdate]; - if (self.roomInfo.type == RoomType_Anchor && self.roomInfo.hadChangeRoomType) {///从其他房变为个播房 - [self handleInitAnchorRoom]; - [self showAnchorScrollTipView]; - } else if (anchorToOther) { - [self.anchorScrollView removeFromSuperview]; - [self.backContainerView removeFromSuperview]; - [self.stageView removeFromSuperview]; - [self.messageContainerView removeFromSuperview]; - [self.quickMessageContainerView removeFromSuperview]; - [self.activityContainerView removeFromSuperview]; - [self.roomHeaderView removeFromSuperview]; - [self.functionView removeFromSuperview]; - - [self.view addSubview:self.backContainerView]; - [self.view addSubview:self.stageView]; - [self.view addSubview:self.messageContainerView]; - [self.view addSubview:self.quickMessageContainerView]; - [self.view addSubview:self.activityContainerView]; - [self.view addSubview:self.roomHeaderView]; - [self.view addSubview:self.functionView]; - [self.view bringSubviewToFront:self.menuContainerView]; - [self.view bringSubviewToFront:self.animationView]; - [self initSubViewConstraints]; - [self changeStageViewOnRoomUpdate]; - [self.stageView onRoomUpdate]; - [self.menuContainerView onRoomUpdate]; - [self.functionView onRoomUpdate]; - [self.activityContainerView onRoomUpdate]; - [self.messageContainerView onRoomUpdate]; - [self.littleGameView onRoomUpdate]; - } else { - if (self.roomInfo.type == RoomType_Anchor) { - [self changeStageViewOnAnchorRoom]; - } else { - [self changeStageViewOnRoomUpdate]; - } - [self.stageView onRoomUpdate]; - [self.menuContainerView onRoomUpdate]; - [self.functionView onRoomUpdate]; - [self.activityContainerView onRoomUpdate]; - [self.messageContainerView onRoomUpdate]; - [self.littleGameView onRoomUpdate]; - } - } - break; - } - } + [self.backContainerView onRoomUpdate]; + self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate; + if (self.roomInfo.type == RoomType_Anchor && self.roomInfo.hadChangeRoomType) {///从其他房变为个播房 + [self handleInitAnchorRoom]; + [self showAnchorScrollTipView]; + } else if (anchorToOther) { + [self.anchorScrollView removeFromSuperview]; + [self.backContainerView removeFromSuperview]; + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + + [self.view addSubview:self.backContainerView]; + [self.view addSubview:self.stageView]; + [self.view addSubview:self.messageContainerView]; + [self.view addSubview:self.quickMessageContainerView]; + [self.view addSubview:self.activityContainerView]; + [self.view addSubview:self.roomHeaderView]; + [self.view addSubview:self.functionView]; + [self.view bringSubviewToFront:self.menuContainerView]; + [self.view bringSubviewToFront:self.animationView]; + [self initSubViewConstraints]; + [self changeStageViewOnRoomUpdate]; + [self.stageView onRoomUpdate]; + [self.menuContainerView onRoomUpdate]; + [self.functionView onRoomUpdate]; + [self.activityContainerView onRoomUpdate]; + [self.messageContainerView onRoomUpdate]; + [self.littleGameView onRoomUpdate]; + } else { + if (self.roomInfo.type == RoomType_Anchor) { + [self changeStageViewOnAnchorRoom]; + } else { + [self changeStageViewOnRoomUpdate]; + } + [self.stageView onRoomUpdate]; + [self.menuContainerView onRoomUpdate]; + [self.functionView onRoomUpdate]; + [self.activityContainerView onRoomUpdate]; + [self.messageContainerView onRoomUpdate]; + [self.littleGameView onRoomUpdate]; + } + } + break; + } + } break; case NIMChatroomEventTypeEnter: if (content.source.userId.integerValue != [AccountInfoStorage instance].getUid.integerValue && self.userInfo.platformRole != 1) { @@ -1208,23 +1212,23 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } } break; - default: - break; - } + default: + break; + } self.roomInfo.onlineNum = onLineNumber; [self.roomHeaderView onRoomUpdate]; - [self.stageView handleNIMNotificationMessage:message]; + [self.stageView handleNIMNotificationMessage:message]; [self.animationView handleNIMNotificationMessage:message]; [self.messageContainerView handleNIMNotificationMessage:message]; [self.activityContainerView handleNIMNotificationMessage:message]; [self.menuContainerView handleNIMNotificationMessage:message]; [self.functionView handleNIMNotificationMessage:message]; [self.littleGameView handleNIMNotificationMessage:message]; - } else if (message.messageType == NIMMessageTypeCustom) { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + } else if (message.messageType == NIMMessageTypeCustom) { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { AttachmentModel * attachment = obj.attachment; - [self.stageView handleNIMCustomMessage:message]; + [self.stageView handleNIMCustomMessage:message]; [self.animationView handleNIMCustomMessage:message]; [self.menuContainerView handleNIMCustomMessage:message]; [self.activityContainerView handleNIMCustomMessage:message]; @@ -1261,33 +1265,33 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [self.littleGameView destroyMG]; [self dismissViewControllerAnimated:YES completion:nil]; } - } else if (attachment.first == CustomMessageType_RedPacket) { - if (attachment.second == Custom_Message_Sub_RoomDiamandRedPacket) { - XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithJSON:attachment.data]; - view.redPacketModel = data; - for (UIView *subView in self.view.subviews) { - if([subView isKindOfClass:[XPReceiveRedPacketView class]]) { - view.alphaView.backgroundColor = [UIColor clearColor]; - break; - } - } - [self.view addSubview:view]; - [self.view bringSubviewToFront:view]; - } + } else if (attachment.first == CustomMessageType_RedPacket) { + if (attachment.second == Custom_Message_Sub_RoomDiamandRedPacket) { + XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithJSON:attachment.data]; + view.redPacketModel = data; + for (UIView *subView in self.view.subviews) { + if([subView isKindOfClass:[XPReceiveRedPacketView class]]) { + view.alphaView.backgroundColor = [UIColor clearColor]; + break; + } + } + [self.view addSubview:view]; + [self.view bringSubviewToFront:view]; + } } else if(attachment.first == CustomMessageType_Wish_Gift) { if (attachment.second == Custom_Message_Sub_Wish_Gift_Open) { self.roomInfo.hasOpenWishGift = YES; } } [self.messageContainerView handleNIMCustomMessage:message]; - } + } } else if(message.messageType == NIMMessageTypeText) { [self.messageContainerView handleNIMTextMessage:message]; } else if(message.messageType == NIMMessageTypeTip) { [self.messageContainerView handleNIMTextMessage:message]; } - } + } } //发送消息成功回调 @@ -1313,8 +1317,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 AttachmentModel * attachment = obj.attachment; [self.stageView handleNIMCustomMessage:message]; [self.animationView handleNIMCustomMessage:message]; - [self.functionView handleNIMCustomMessage:message]; - if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { + [self.functionView handleNIMCustomMessage:message]; + if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:attachment.data[@"roomInfo"]]; self.roomInfo.isCloseScreen = roomInfo.isCloseScreen; [self.menuContainerView onRoomUpdate]; @@ -1351,11 +1355,11 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 #pragma mark - RoomDelegate - (RoomInfoModel *)getRoomInfo { - return self.roomInfo; + return self.roomInfo; } - (UserInfoModel *)getUserInfo { - return self.userInfo; + return self.userInfo; } - (void)exitRoom { @@ -1383,8 +1387,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; [[XPRoomMiniManager shareManager] resetLocalMessage]; [[RtcManager instance] exitRoom]; - [self.presenter reportUserOutRoom:roomUid]; - [self handleFirstOutRoom]; + [self.presenter reportUserOutRoom:roomUid]; + [self handleFirstOutRoom]; [self dismissViewControllerAnimated:YES completion:nil]; } cancelHandler:^{ @@ -1395,8 +1399,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; [[XPRoomMiniManager shareManager] resetLocalMessage]; [[RtcManager instance] exitRoom]; - [self.presenter reportUserOutRoom:roomUid]; - [self handleFirstOutRoom]; + [self.presenter reportUserOutRoom:roomUid]; + [self handleFirstOutRoom]; [self dismissViewControllerAnimated:YES completion:nil]; } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; } else if(self.roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { @@ -1408,19 +1412,19 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 if (arrangeMicModel.myPos.intValue > 0) { [TTPopup alertWithMessage:@"退出房间后将退出目前排麦,再次进入需要重新排麦,确认退出房间吗?" confirmHandler:^{ __block NSString * grouptype = @"0"; - [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { - grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; - *stop = YES; - } - }]; + [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; + *stop = YES; + } + }]; [Api cancelRoomPKArrangeMic:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { } roomUid:roomUid operUid:uid groupType:grouptype]; [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; [[XPRoomMiniManager shareManager] resetLocalMessage]; [[RtcManager instance] exitRoom]; - [self handleFirstOutRoom]; + [self handleFirstOutRoom]; [self dismissViewControllerAnimated:YES completion:nil]; } cancelHandler:^{ @@ -1431,7 +1435,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; [[XPRoomMiniManager shareManager] resetLocalMessage]; [[RtcManager instance] exitRoom]; - [self handleFirstOutRoom]; + [self handleFirstOutRoom]; [self dismissViewControllerAnimated:YES completion:nil]; } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; }else if(self.roomInfo.type == RoomType_MiniGame) { @@ -1446,7 +1450,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [[RtcManager instance] exitRoom]; [self.littleGameView handleSelfInExitEvent]; [self.littleGameView destroyMG]; - [self handleFirstOutRoom]; + [self handleFirstOutRoom]; [self dismissViewControllerAnimated:YES completion:nil]; }); } cancelHandler:^{ @@ -1456,15 +1460,15 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [[RtcManager instance] exitRoom]; [self.littleGameView handleSelfInExitEvent]; [self.littleGameView destroyMG]; - [self handleFirstOutRoom]; + [self handleFirstOutRoom]; [self dismissViewControllerAnimated:YES completion:nil]; } } else { [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; [[XPRoomMiniManager shareManager] resetLocalMessage]; [[RtcManager instance] exitRoom]; - [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; - [self handleFirstOutRoom]; + [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + [self handleFirstOutRoom]; [self dismissViewControllerAnimated:YES completion:nil]; } } @@ -1472,38 +1476,38 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 - (void)miniRoom { [self.menuContainerView menuResignFirstResponder]; if(self.roomInfo.type == RoomType_MiniGame) { - if ([self.littleGameView isInSudGame]) { - TTAlertConfig *config = [[TTAlertConfig alloc] init]; - config.cancelButtonConfig.title = @"取消"; - config.confirmButtonConfig.title = @"确认"; - config.message = @"退出房间则默认认输逃跑,是否退房?"; - [TTPopup alertWithConfig:config confirmHandler:^{ // 知道了 - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [[XPRoomMiniManager shareManager] configRoomInfo:self.roomInfo]; - [[XPRoomMiniManager shareManager] configUserInfo:self.userInfo]; - [[XPRoomMiniManager shareManager] configCurrentMusic:self.functionView.getCurrentMusic isPlaying:self.functionView.isPlaying]; - NSDictionary * dic = @{@"roomInfo":self.roomInfo.model2dictionary, @"userInfo":self.userInfo.model2dictionary, @"microQueue":self.getMicroQueue}; - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomMiniNotificationKey object:nil userInfo:dic]; - [self.view endEditing:YES]; - [self.littleGameView handleSelfInExitEvent]; - [self.littleGameView destroyMG]; - [self handleFirstOutRoom]; - [self dismissViewControllerAnimated:YES completion:nil]; - }); - } cancelHandler:^{ - }]; - } else { - [[XPRoomMiniManager shareManager] configRoomInfo:self.roomInfo]; - [[XPRoomMiniManager shareManager] configUserInfo:self.userInfo]; - [[XPRoomMiniManager shareManager] configCurrentMusic:self.functionView.getCurrentMusic isPlaying:self.functionView.isPlaying]; - NSDictionary * dic = @{@"roomInfo":self.roomInfo.model2dictionary, @"userInfo":self.userInfo.model2dictionary, @"microQueue":self.getMicroQueue}; - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomMiniNotificationKey object:nil userInfo:dic]; - [self.view endEditing:YES]; - [self.littleGameView handleSelfInExitEvent]; - [self.littleGameView destroyMG]; - [self handleFirstOutRoom]; - [self dismissViewControllerAnimated:YES completion:nil]; - } + if ([self.littleGameView isInSudGame]) { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.cancelButtonConfig.title = @"取消"; + config.confirmButtonConfig.title = @"确认"; + config.message = @"退出房间则默认认输逃跑,是否退房?"; + [TTPopup alertWithConfig:config confirmHandler:^{ // 知道了 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [[XPRoomMiniManager shareManager] configRoomInfo:self.roomInfo]; + [[XPRoomMiniManager shareManager] configUserInfo:self.userInfo]; + [[XPRoomMiniManager shareManager] configCurrentMusic:self.functionView.getCurrentMusic isPlaying:self.functionView.isPlaying]; + NSDictionary * dic = @{@"roomInfo":self.roomInfo.model2dictionary, @"userInfo":self.userInfo.model2dictionary, @"microQueue":self.getMicroQueue}; + [[NSNotificationCenter defaultCenter] postNotificationName:kRoomMiniNotificationKey object:nil userInfo:dic]; + [self.view endEditing:YES]; + [self.littleGameView handleSelfInExitEvent]; + [self.littleGameView destroyMG]; + [self handleFirstOutRoom]; + [self dismissViewControllerAnimated:YES completion:nil]; + }); + } cancelHandler:^{ + }]; + } else { + [[XPRoomMiniManager shareManager] configRoomInfo:self.roomInfo]; + [[XPRoomMiniManager shareManager] configUserInfo:self.userInfo]; + [[XPRoomMiniManager shareManager] configCurrentMusic:self.functionView.getCurrentMusic isPlaying:self.functionView.isPlaying]; + NSDictionary * dic = @{@"roomInfo":self.roomInfo.model2dictionary, @"userInfo":self.userInfo.model2dictionary, @"microQueue":self.getMicroQueue}; + [[NSNotificationCenter defaultCenter] postNotificationName:kRoomMiniNotificationKey object:nil userInfo:dic]; + [self.view endEditing:YES]; + [self.littleGameView handleSelfInExitEvent]; + [self.littleGameView destroyMG]; + [self handleFirstOutRoom]; + [self dismissViewControllerAnimated:YES completion:nil]; + } }else { [[XPRoomMiniManager shareManager] configRoomInfo:self.roomInfo]; [[XPRoomMiniManager shareManager] configUserInfo:self.userInfo]; @@ -1511,7 +1515,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 NSDictionary * dic = @{@"roomInfo":self.roomInfo.model2dictionary, @"userInfo":self.userInfo.model2dictionary, @"microQueue":self.getMicroQueue}; [[NSNotificationCenter defaultCenter] postNotificationName:kRoomMiniNotificationKey object:nil userInfo:dic]; [self.view endEditing:YES]; - [self handleFirstOutRoom]; + [self handleFirstOutRoom]; [self dismissViewControllerAnimated:YES completion:nil]; } } @@ -1521,7 +1525,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } - (NSMutableDictionary *)getMicroQueue { - return [self.stageView getMicroQueue]; + return [self.stageView getMicroQueue]; } - (NSArray *)getRoomSuperAdminList { @@ -1557,17 +1561,17 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } - (CGPoint)animationPointAtStageViewByUid:(NSString *)uid { - return [self.stageView animationPointAtStageViewByUid:uid]; + return [self.stageView animationPointAtStageViewByUid:uid]; } #pragma mark - 首次退出非自己的房间,处理是否需要弹新用户充值优惠 - (void)handleFirstOutRoom { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - if (![defaults boolForKey:kHadQuitOtherRoomKey] && self.userInfo.uid != self.roomInfo.uid && self.userInfo.showLimitCharge) { - [defaults setBool:YES forKey:kHadQuitOtherRoomKey]; - [defaults synchronize]; - [[NSNotificationCenter defaultCenter] postNotificationName:kNewUserRechargeKey object:nil]; - } + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + if (![defaults boolForKey:kHadQuitOtherRoomKey] && self.userInfo.uid != self.roomInfo.uid && self.userInfo.showLimitCharge) { + [defaults setBool:YES forKey:kHadQuitOtherRoomKey]; + [defaults synchronize]; + [[NSNotificationCenter defaultCenter] postNotificationName:kNewUserRechargeKey object:nil]; + } } #pragma mark - XPRoomLittleGameContainerViewDelegate @@ -1577,12 +1581,12 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 #pragma mark - AnchorRoomScrollViewDelegate - (void)anchorScrollViewScrollToNext:(AnchorRoomScrollView *)anchorScrollView { - if (!self) { - return; - } - [self.view endEditing:YES]; - [self showAnchorLoading]; - [self.presenter getCycleAnchorRoomList:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + if (!self) { + return; + } + [self.view endEditing:YES]; + [self showAnchorLoading]; + [self.presenter getCycleAnchorRoomList:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; } @@ -1609,66 +1613,66 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 if ([pwdDes isEqualToString:self.roomInfo.roomPwd]) { [TTPopup dismiss]; view.isPwdError = NO; - if (self.roomInfo.type == RoomType_Anchor) { - if (!self.anchorScrollView.superview) { - [self.view insertSubview:self.anchorScrollView belowSubview:self.menuContainerView]; - } - [self.backContainerView removeFromSuperview]; - [self.stageView removeFromSuperview]; - [self.messageContainerView removeFromSuperview]; - [self.quickMessageContainerView removeFromSuperview]; - [self.activityContainerView removeFromSuperview]; - [self.roomHeaderView removeFromSuperview]; - [self.functionView removeFromSuperview]; - - [self.anchorScrollView addSubview:self.backContainerView]; - [self.anchorScrollView addSubview:self.stageView]; - [self.anchorScrollView addSubview:self.messageContainerView]; - [self.anchorScrollView addSubview:self.quickMessageContainerView]; - [self.anchorScrollView addSubview:self.activityContainerView]; - [self.anchorScrollView addSubview:self.roomHeaderView]; - [self.anchorScrollView addSubview:self.functionView]; - if (!self.menuContainerView.superview) { - [self.view addSubview:self.menuContainerView]; - } + if (self.roomInfo.type == RoomType_Anchor) { + if (!self.anchorScrollView.superview) { + [self.view insertSubview:self.anchorScrollView belowSubview:self.menuContainerView]; + } + [self.backContainerView removeFromSuperview]; + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + + [self.anchorScrollView addSubview:self.backContainerView]; + [self.anchorScrollView addSubview:self.stageView]; + [self.anchorScrollView addSubview:self.messageContainerView]; + [self.anchorScrollView addSubview:self.quickMessageContainerView]; + [self.anchorScrollView addSubview:self.activityContainerView]; + [self.anchorScrollView addSubview:self.roomHeaderView]; + [self.anchorScrollView addSubview:self.functionView]; + if (!self.menuContainerView.superview) { + [self.view addSubview:self.menuContainerView]; + } [self.view bringSubviewToFront:self.animationView]; - - [self updateViewConstraintsOnAnchorRoom]; - [self changeStageViewOnAnchorRoom]; - - [self.roomHeaderView onRoomEntered]; - [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; - [self.backContainerView onRoomEntered]; - [self.littleGameView onRoomEntered]; - if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 - [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.functionView onRoomEntered]; - [self.messageContainerView onRoomEntered]; - } else { - //虽然没退出房间 但是队列还是要拿的 - [self.stageView onRoomMiniEntered]; - [self.messageContainerView onRoomMiniEntered]; - [self.functionView onRoomMiniEntered]; - [self.functionView onRoomEntered]; - } - [[XPRoomMiniManager shareManager] configRoomInfo:nil]; - [[XPRoomMiniManager shareManager] configUserInfo:nil]; - [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; - } else { - [self.roomHeaderView onRoomEntered]; - [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; - [self changeStageViewOnRoomUpdate]; - [self.backContainerView onRoomEntered]; - [self.functionView onRoomEntered]; - [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.messageContainerView onRoomEntered]; - [self.littleGameView onRoomEntered]; - [[XPRoomMiniManager shareManager] configRoomInfo:nil]; - [[XPRoomMiniManager shareManager] configUserInfo:nil]; - [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; - } + + [self updateViewConstraintsOnAnchorRoom]; + [self changeStageViewOnAnchorRoom]; + + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; + [self.littleGameView onRoomEntered]; + if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.functionView onRoomEntered]; + [self.messageContainerView onRoomEntered]; + } else { + //虽然没退出房间 但是队列还是要拿的 + [self.stageView onRoomMiniEntered]; + [self.messageContainerView onRoomMiniEntered]; + [self.functionView onRoomMiniEntered]; + [self.functionView onRoomEntered]; + } + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } else { + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self changeStageViewOnRoomUpdate]; + [self.backContainerView onRoomEntered]; + [self.functionView onRoomEntered]; + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.messageContainerView onRoomEntered]; + [self.littleGameView onRoomEntered]; + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } } else { view.isPwdError = YES; } @@ -1681,45 +1685,45 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } - (XPRoomBackContainerView *)backContainerView { - if (!_backContainerView) { - _backContainerView = [[XPRoomBackContainerView alloc] initWithdelegate:self]; - } - return _backContainerView; + if (!_backContainerView) { + _backContainerView = [[XPRoomBackContainerView alloc] initWithdelegate:self]; + } + return _backContainerView; } - (RoomHeaderView *)roomHeaderView { - if (!_roomHeaderView) { - _roomHeaderView = [[RoomHeaderView alloc] initWithDelegate:self]; - } - return _roomHeaderView; + if (!_roomHeaderView) { + _roomHeaderView = [[RoomHeaderView alloc] initWithDelegate:self]; + } + return _roomHeaderView; } - (XPRoomMessageContainerView *)messageContainerView { - if (!_messageContainerView) { - _messageContainerView = [[XPRoomMessageContainerView alloc] initWithDelegate:self]; - } - return _messageContainerView; + if (!_messageContainerView) { + _messageContainerView = [[XPRoomMessageContainerView alloc] initWithDelegate:self]; + } + return _messageContainerView; } - (XPRoomQuickMessageContainView *)quickMessageContainerView { - if(!_quickMessageContainerView) { - _quickMessageContainerView = [[XPRoomQuickMessageContainView alloc] initWithDelegate:self]; - } - return _quickMessageContainerView; + if(!_quickMessageContainerView) { + _quickMessageContainerView = [[XPRoomQuickMessageContainView alloc] initWithDelegate:self]; + } + return _quickMessageContainerView; } - (XPRoomMenuContainerView *)menuContainerView { - if (!_menuContainerView) { - _menuContainerView = [[XPRoomMenuContainerView alloc] initWithDelegate:self]; - } - return _menuContainerView; + if (!_menuContainerView) { + _menuContainerView = [[XPRoomMenuContainerView alloc] initWithDelegate:self]; + } + return _menuContainerView; } - (XPRoomActivityContainerView *)activityContainerView { - if (!_activityContainerView) { - _activityContainerView = [[XPRoomActivityContainerView alloc] initWithdelegate:self]; - } - return _activityContainerView; + if (!_activityContainerView) { + _activityContainerView = [[XPRoomActivityContainerView alloc] initWithdelegate:self]; + } + return _activityContainerView; } - (XPRoomAnimationView *)animationView { @@ -1752,22 +1756,22 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } - (AnchorRoomScrollView *)anchorScrollView { - if (!_anchorScrollView) { - _anchorScrollView = [[AnchorRoomScrollView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - _anchorScrollView.anchorScrollDelegate = self; + if (!_anchorScrollView) { + _anchorScrollView = [[AnchorRoomScrollView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + _anchorScrollView.anchorScrollDelegate = self; _anchorScrollView.hostDelegate = self; if (@available(iOS 11.0, *)) { _anchorScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } - } - return _anchorScrollView; + } + return _anchorScrollView; } - (AnchorRoomSrollTipView *)anchorScrollTipView { - if (!_anchorScrollTipView) { - _anchorScrollTipView = [[AnchorRoomSrollTipView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - } - return _anchorScrollTipView; + if (!_anchorScrollTipView) { + _anchorScrollTipView = [[AnchorRoomSrollTipView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + } + return _anchorScrollTipView; } - (NSMutableArray *)anchorRoomList {