diff --git a/Podfile b/Podfile index 80704acb..14554cdd 100644 --- a/Podfile +++ b/Podfile @@ -40,7 +40,7 @@ target 'xplan-ios' do #pop动画 pod 'pop', '~> 1.0.12' #云信 - pod 'NIMSDK_LITE', '~> 7.8.3' + pod 'NIMSDK_LITE', '~> 9.0.1' #下拉刷新控件 pod 'MJRefresh' #登录的 diff --git a/Podfile.lock b/Podfile.lock index 238c6c9e..ddd69082 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -47,7 +47,7 @@ PODS: - mob_sharesdk/ShareSDK - MOBFoundation (>= 3.2.9) - MOBFoundation (3.2.27) - - NIMSDK_LITE (7.8.5) + - NIMSDK_LITE (9.0.1) - NTESBaseComponent (1.4) - NTESQuickPass (3.2.6): - NTESBaseComponent @@ -108,7 +108,7 @@ DEPENDENCIES: - mob_sharesdk/ShareSDKPlatforms/Apple - mob_sharesdk/ShareSDKPlatforms/QQ - mob_sharesdk/ShareSDKPlatforms/WeChat - - NIMSDK_LITE (~> 7.8.3) + - NIMSDK_LITE (~> 9.0.1) - NTESQuickPass - pop (~> 1.0.12) - QGVAPlayer @@ -130,6 +130,7 @@ SPEC REPOS: https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git: - IQKeyboardManager - JXPagingView + - NIMSDK_LITE - NTESBaseComponent - NTESQuickPass - QGVAPlayer @@ -151,7 +152,6 @@ SPEC REPOS: - MJRefresh - mob_sharesdk - MOBFoundation - - NIMSDK_LITE - pop - Protobuf - Qiniu @@ -192,7 +192,7 @@ SPEC CHECKSUMS: MJRefresh: ec9c53ff4abf3a9237b4283862f1bd51c2ee3fdb mob_sharesdk: a60006891a079486ff3269ed326adfa05a967c01 MOBFoundation: efdc3ce6b843fbc10ae8c1c6122a02b0d845b39b - NIMSDK_LITE: 8e28ae0a26dd1dccc4684b697381f0a72a733f51 + NIMSDK_LITE: c376a3f90c1cd79d9cca39fbdeb6a718e99e244a NTESBaseComponent: 9e97373eec7e5a26c39db26477bf99a37ee9e71a NTESQuickPass: 781bd12ee63681389fe9b646c837fa76e3a00e6e pop: d582054913807fd11fd50bfe6a539d91c7e1a55a @@ -215,6 +215,6 @@ SPEC CHECKSUMS: YYText: 5c461d709e24d55a182d1441c41dc639a18a4849 YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928 -PODFILE CHECKSUM: f2682cf01b67e68f847979b09786b508a737bed6 +PODFILE CHECKSUM: d02ba4da989cc65b5e850b0ff42a9ef68dcc1f1e COCOAPODS: 1.11.2 diff --git a/xplan-ios/Main/Message/View/Session/SessionViewController.m b/xplan-ios/Main/Message/View/Session/SessionViewController.m index bf23b1ce..2febd07a 100644 --- a/xplan-ios/Main/Message/View/Session/SessionViewController.m +++ b/xplan-ios/Main/Message/View/Session/SessionViewController.m @@ -9,6 +9,7 @@ #import #import #import +#import ///Tool #import "XCCurrentVCStackManager.h" #import "NIMMessageMaker.h" @@ -44,6 +45,8 @@ @property (nonatomic, strong) UserInfoModel *userInfo; ///输入框 @property (nonatomic,strong) SessionToolbarView *toolbarView; +///最后的一条消息 +@property (nonatomic,strong) NIMMessage *lastMessage; @end @implementation SessionViewController @@ -73,12 +76,49 @@ [super viewDidLoad]; [IQKeyboardManager sharedManager].enable = NO; [IQKeyboardManager sharedManager].enableAutoToolbar = NO; - [self initData]; + [self initHeaderAndFooterRrfresh]; [[NIMSDK sharedSDK].chatManager addDelegate:self]; [[NIMSDK sharedSDK].conversationManager addDelegate:self]; [self.presenter getUserInfo:self.session.sessionId]; } +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [ThemeColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [ThemeColor secondTextColor]; + self.sessionTableView.mj_header = header; + [self headerRefresh]; + [self initData]; +} + +- (void)headerRefresh { + if (self.messages.count > 0) { + [[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:self.messages.firstObject limit:20 completion:^(NSError * _Nullable error, NSArray * _Nullable messages) { + [self.sessionTableView.mj_header endRefreshing]; + if (error == nil && messages.count > 0) { + for (int i = ((int)messages.count -1); i > 0; i--) { + NIMMessage * message = [messages objectAtIndex:i]; + [self.messages insertObject:message atIndex:0]; + } + } + [self.sessionTableView reloadData]; + }]; + } else { + [[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:nil limit:20 completion:^(NSError * _Nullable error, NSArray * _Nullable messages) { + [self.sessionTableView.mj_header endRefreshing]; + if (error == nil) { + [self.messages addObjectsFromArray:messages]; + } + [self.sessionTableView reloadData]; + [self.sessionTableView nim_scrollToBottom:NO]; + }]; + } + +} + +#pragma mark - Private Method - (void)initViews { NIMUser * user = [[NIMSDK sharedSDK].userManager userInfo:self.session.sessionId]; if (user) { @@ -109,11 +149,6 @@ } - (void)initData { - NSArray *messages = [[NIMSDK sharedSDK].conversationManager messagesInSession:self.session message:nil limit:1000]; - [self.messages addObjectsFromArray:messages.copy]; - [self.sessionTableView reloadData]; - [self.sessionTableView nim_scrollToBottom:NO]; - [[NIMSDK sharedSDK].userManager fetchUserInfos:@[self.session.sessionId] completion:^(NSArray * _Nullable users, NSError * _Nullable error) { if (!error) { self.title = users[0].userInfo.nickName; @@ -276,7 +311,7 @@ [self.toolbarView mas_updateConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(self.view).offset(-heightFromBottom); }]; - [self.sessionTableView nim_scrollToBottom:YES]; + [self.sessionTableView nim_scrollToBottom:NO]; } - (void)sendTextMessage:(NSString *)text {