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

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; @property (nonatomic,weak) UIViewController * controller;
///当前最小化的房间的uid 如果没有的话 为nil ///当前最小化的房间的uid 如果没有的话 为nil
@property (nonatomic,strong, readonly) NSString *currentRoomUid; @property (nonatomic,strong, readonly) NSString *currentRoomUid;
///房间的id
@property (nonatomic,strong, readonly) NSString *currentRoomId;
///房间最小化 初始化 ///房间最小化 初始化
- (void)configRoomMiniView:(RoomInfoModel *)roomInfo; - (void)configRoomMiniView:(RoomInfoModel *)roomInfo;
///隐藏最小化的view ///隐藏最小化的view

View File

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

View File

@@ -58,12 +58,6 @@
@implementation XPRoomViewController @implementation XPRoomViewController
+ (BOOL)openRoom:(NSString *)roomUid viewController:(UIViewController *)viewController { + (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]; XPRoomViewController * roomVC = [[self alloc] init];
roomVC.roomUid = roomUid; roomVC.roomUid = roomUid;
BaseNavigationController * baseNav = [[BaseNavigationController alloc] initWithRootViewController:roomVC]; BaseNavigationController * baseNav = [[BaseNavigationController alloc] initWithRootViewController:roomVC];
@@ -87,6 +81,7 @@
- (void)viewDidLoad { - (void)viewDidLoad {
[super viewDidLoad]; [super viewDidLoad];
[self exitOldRoom];
[self initSubViews]; [self initSubViews];
[self initSubViewConstraints]; [self initSubViewConstraints];
[self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid]; [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 #pragma mark - XPRoomProtocol
- (void)initEnterRoomSuccess:(RoomInfoModel *)roomInfo user:(UserInfoModel *)userInfo { - (void)initEnterRoomSuccess:(RoomInfoModel *)roomInfo user:(UserInfoModel *)userInfo {
self.roomInfo = roomInfo; self.roomInfo = roomInfo;
@@ -161,7 +165,13 @@
[self enterRoomFail]; [self enterRoomFail];
} else { } else {
[self.roomHeaderView onRoomUpdate]; [self.roomHeaderView onRoomUpdate];
[self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; 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 { // } else { //
if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) { // if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) { //