最小化进房的会下麦的问题

This commit is contained in:
fengshuo
2021-12-03 19:10:35 +08:00
parent d333dae05b
commit 1203b4e4f1
3 changed files with 30 additions and 12 deletions

View File

@@ -20,6 +20,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,weak) UIViewController * controller;
///当前最小化的房间的uid 如果没有的话 为nil
@property (nonatomic,strong, readonly) NSString *currentRoomUid;
///房间的id
@property (nonatomic,strong, readonly) NSString *currentRoomId;
///房间最小化 初始化
- (void)configRoomMiniView:(RoomInfoModel *)roomInfo;
///隐藏最小化的view

View File

@@ -8,6 +8,7 @@
#import "XPMiniRoomView.h"
///Third
#import <Masonry/Masonry.h>
#import <NIMSDK/NIMSDK.h>
///Tool
#import "XPMacro.h"
#import "ThemeColor.h"
@@ -37,6 +38,8 @@
@property (nonatomic,strong) RoomInfoModel *roomInfo;
///uid nil
@property (nonatomic,strong) NSString *currentRoomUid;
///id
@property (nonatomic,strong) NSString *currentRoomId;
@end
@@ -64,12 +67,14 @@
- (void)configRoomMiniView:(RoomInfoModel *)roomInfo {
self.hidden = NO;
self.currentRoomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid];
self.currentRoomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
self.roomInfo = roomInfo;
[self startAvatarAnimation];
}
- (void)hiddenRoomMiniView {
self.currentRoomUid = nil;
self.currentRoomId = nil;
self.hidden = YES;
}
@@ -140,17 +145,18 @@
#pragma mark - Event Response
- (void)closeButtonAction:(UIButton *)sender {
[[NIMSDK sharedSDK].chatroomManager exitChatroom:self.currentRoomId completion:nil];
[[RtcManager instance] exitRoom];
[self.avatarImageView.layer removeAllAnimations];
[self.noteView stopAnimation];
[self removeFromSuperview];
self.currentRoomUid = nil;
self.currentRoomId = nil;
self.hidden = YES;
}
- (void)enterRomRecognizer:(UITapGestureRecognizer *)tap {
if (self.roomInfo.uid > 0 && self.controller) {
[self removeFromSuperview];
NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid];
[XPRoomViewController openRoom:roomUid viewController:self.controller];
if (self.currentRoomUid > 0 && self.controller) {
[XPRoomViewController openRoom:self.currentRoomUid viewController:self.controller];
}
}

View File

@@ -58,12 +58,6 @@
@implementation XPRoomViewController
+ (BOOL)openRoom:(NSString *)roomUid viewController:(UIViewController *)viewController {
if ([XPMiniRoomView shareMiniRoomView].currentRoomUid.integerValue > 0 && [XPMiniRoomView shareMiniRoomView].currentRoomUid.integerValue != roomUid.integerValue) {
// 退
[[RtcManager instance] exitRoom];
}
///
[[XPMiniRoomView shareMiniRoomView] hiddenRoomMiniView];
XPRoomViewController * roomVC = [[self alloc] init];
roomVC.roomUid = roomUid;
BaseNavigationController * baseNav = [[BaseNavigationController alloc] initWithRootViewController:roomVC];
@@ -87,6 +81,7 @@
- (void)viewDidLoad {
[super viewDidLoad];
[self exitOldRoom];
[self initSubViews];
[self initSubViewConstraints];
[self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid];
@@ -151,6 +146,15 @@
}];
}
- (void)exitOldRoom {
NSString * roomUid = [XPMiniRoomView shareMiniRoomView].currentRoomUid;
if (roomUid.integerValue > 0 && roomUid.integerValue != self.roomUid.integerValue) {
// 退
[self.presenter exitNIMRoom:[XPMiniRoomView shareMiniRoomView].currentRoomId];
[[RtcManager instance] exitRoom];
}
}
#pragma mark - XPRoomProtocol
- (void)initEnterRoomSuccess:(RoomInfoModel *)roomInfo user:(UserInfoModel *)userInfo {
self.roomInfo = roomInfo;
@@ -161,7 +165,13 @@
[self enterRoomFail];
} else {
[self.roomHeaderView onRoomUpdate];
if ([XPMiniRoomView shareMiniRoomView].currentRoomUid.integerValue != self.roomUid.integerValue) {// 退
[self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo];
///
[[XPMiniRoomView shareMiniRoomView] hiddenRoomMiniView];
} else {///退
[self enterRoomSuccess];
}
}
} else { //
if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) { //