最小化进房的会下麦的问题
This commit is contained in:
@@ -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
|
||||||
|
@@ -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];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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]]) { // 当前用户进入自己房间
|
||||||
|
Reference in New Issue
Block a user