| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 |
- //
- // ConversationVC.m
- // jitao
- //
- // Created by 罗云飞 on 2017/9/14.
- // Copyright © 2017年 罗云飞. All rights reserved.
- //
- #import "ConversationVC.h"
- #import "EaseUsersListViewController.h"
- #import "YCBaseTableViewCell.h"
- #import "MessagecurrencyCell.h"
- #import "SystemmessageViewController.h"//系统消息
- #import "JTRecommendViewController.h"//技淘智推
- #import "OpenUDID.h"
- #import "TaoXinModel.h"
- #import "StewardshipOnlineCell.h"
- #import "EaseMessageViewController.h"
- #import "MSUMessageChatController.h"
- @interface ConversationVC ()<EMChatManagerDelegate,EaseConversationListViewControllerDelegate,EaseConversationListViewControllerDataSource,EMClientDelegate>{
- NSArray *arrConversations;
- }
- @end
- @implementation ConversationVC
- - (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
- [self getAllConversations]; //获取所有的会话
- [self tableViewDidTriggerHeaderRefresh];
- }
- //获取所有的会话
- - (void)getAllConversations
- {
- arrConversations = [[EMClient sharedClient].chatManager getAllConversations];
- [self.tableView reloadData];
- }
- - (void)userAccountDidLoginFromOtherDevice{
- NSLog(@"%@",@"环信在其他地方登录,请重新登录");
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- if ([EMClient sharedClient].isConnected) {
- NSLog(@"环信连接成功");
- }else{
- NSLog(@"环信登录失效");
- }
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(UserinfoNotificationMethod) name:@"环信登录成功" object:nil];
- self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tuisongManageNotification:) name:NewtuisongManageNotification object:nil];
-
- [self setTitle:@"客服"];
- self.tableView.separatorStyle = NO;
- self.delegate = self;
- self.dataSource = self;
- self.showRefreshHeader = YES;
- [self tableViewDidTriggerHeaderRefresh];
- [self refreshAndSortView];//刷新内存中的消息
- [[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil];
- NSLog(@"%ld",arrConversations.count);
- }
- - (void)tuisongManageNotification:(NSNotification *)notication
- {
- if ([notication.object isEqualToString:@"1"]) {
- JTRecommendViewController*vc = [[JTRecommendViewController alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- NewPushViewController(vc);
- }else if([notication.object isEqualToString:@"0"]){
- SystemmessageViewController *vc = [[SystemmessageViewController alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- NewPushViewController(vc);
- }
- }
- #pragma mark --------APP启动时候自动登录通知刷新会话列表------------
- - (void)UserinfoNotificationMethod{
- [self tableViewDidTriggerHeaderRefresh];
- }
- // 收到消息回调
- - (void)didReceiveMessages:(NSArray *)aMessages
- {
- [self tableViewDidTriggerHeaderRefresh];
- }
- #pragma mark - Table view data source
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- {
- // Return the number of sections.
- return 1;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- // Return the number of rows in the section.
- return [self.dataArray count]+2;
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- static NSString *cellIdentifier = @"CELL";
- static NSString *messageCell = @"systemmessageCell";
- static NSString *messageCell1 = @"systemmessageCell1";
- // if (indexPath.row == 0) {
- // MessagecurrencyCell *cell = [tableView dequeueReusableCellWithIdentifier:messageCell];
- // if (cell == nil) {
- // cell = [[MessagecurrencyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:messageCell];
- // }
- // [cell setSelectionStyle:UITableViewCellSelectionStyleNone];//(这种是没有点击后的阴影效果)
- // cell.accessoryType = UITableViewCellAccessoryNone;
- // [cell.image setImage:[UIImage imageNamed:@"系统消息(淘信)"]];
- // [cell.title setText:@"系统消息"];
- // if (self.systemArray.count>0) {
- // TaoXinModel *model = self.systemArray[0];
- // cell.time.text = model.sysMessageDate;
- // if ([model.sysMessageUnRead integerValue] >99) {
- // cell.corner.hidden = NO;
- // cell.corner.text = @"N+";
- // cell.corner.backgroundColor = NewRedColor;
- // }else{
- // if ([model.sysMessageUnRead integerValue] == 0) {
- // cell.corner.hidden = YES;
- // cell.title.sd_layout.topSpaceToView(cell.contentView, (cell.height-14)/2);
- // cell.corner.backgroundColor = NewClearColor;
- // }else{
- // cell.corner.hidden = NO;
- // cell.corner.text = model.sysMessageUnRead;
- // cell.corner.backgroundColor = NewRedColor;
- // }
- // }
- // cell.content.text = model.sysMessageTitle;
- // }
- // return cell;
- // }else
- if (indexPath.row == 0){
- MessagecurrencyCell *cell = [tableView dequeueReusableCellWithIdentifier:messageCell1];
- if (cell == nil) {
- cell = [[MessagecurrencyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:messageCell1];
- }
- [cell setSelectionStyle:UITableViewCellSelectionStyleNone];//(这种是没有点击后的阴影效果)
- cell.accessoryType = UITableViewCellAccessoryNone;
- [cell.image setImage:[UIImage imageNamed:@"技淘智推"]];
- [cell.title setText:@"智能匹配"];
- if (self.systemArray.count>0) {
- TaoXinModel *model = self.systemArray[0];
- cell.time.text = model.recMessageDate;
- if ([model.recMessageUnRead integerValue] >99) {
- cell.corner.hidden = NO;
- cell.corner.text = @"N+";
- cell.corner.backgroundColor = NewRedColor;
- }else{
- if ([model.recMessageUnRead integerValue] == 0) {
- cell.corner.hidden = YES;
- cell.title.sd_layout.topSpaceToView(cell.contentView, (cell.height-14)/2);
- cell.corner.backgroundColor = NewClearColor;
- }else{
- cell.corner.hidden = NO;
- cell.corner.text = model.recMessageUnRead;
- cell.corner.backgroundColor = NewRedColor;
- }
- }
- cell.content.text = model.recMessageTitle;
- }
- return cell;
- }else if(indexPath.row == 1){
- StewardshipOnlineCell *cell = [tableView dequeueReusableCellWithIdentifier:messageCell1];
- if (cell == nil) {
- cell = [[StewardshipOnlineCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:messageCell1];
- }
- [cell setSelectionStyle:UITableViewCellSelectionStyleNone];//(这种是没有点击后的阴影效果)
- cell.accessoryType = UITableViewCellAccessoryNone;
- [cell.headimage setImage:NewImageNamed(@"管家在线")];
- cell.title.text = @"客服在线";
- return cell;
- }else{
- YCBaseTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
- if (cell == nil) {
- cell = [[YCBaseTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
- }
- [cell setSelectionStyle:UITableViewCellSelectionStyleNone];//(这种是没有点击后的阴影效果)
- cell.accessoryType = UITableViewCellAccessoryNone;
- id<IConversationModel> model = [self.dataArray objectAtIndex:indexPath.row-2];
- cell.newmodel = model;
- if (self && [self respondsToSelector:@selector(conversationListViewController:latestMessageTitleForConversationModel:)]) {
- NSMutableAttributedString *attributedText = [[self conversationListViewController:self latestMessageTitleForConversationModel:model] mutableCopy];
- [attributedText addAttributes:@{NSFontAttributeName : cell.detailLabel.font} range:NSMakeRange(0, attributedText.length)];
- cell.detailLabel.attributedText = attributedText;
- } else {
- cell.detailLabel.attributedText = [[EaseEmotionEscape sharedInstance] attStringFromTextForChatting:[self _latestMessageTitleForConversationModel:model]textFont:cell.detailLabel.font];
- }
- if (self && [self respondsToSelector:@selector(conversationListViewController:latestMessageTimeForConversationModel:)]) {
- cell.timeLabel.text = [self conversationListViewController:self latestMessageTimeForConversationModel:model];
- } else {
- cell.timeLabel.text = [self _latestMessageTimeForConversationModel:model];
- }
- cell.titleLabel.font = NewFont(fitScreenWidth(15));
- cell.avatarView.imageView.sd_layout
- .heightIs(fitScreenWidth(44))
- .widthIs(fitScreenWidth(44));
- cell.avatarView.imageCornerRadius = fitScreenWidth(44)/2;//头像圆角
- return cell;
- }
- }
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- [tableView deselectRowAtIndexPath:indexPath animated:YES];
- // if (indexPath.row == 0) {
- // SystemmessageViewController *vc = [[SystemmessageViewController alloc] init];
- // vc.hidesBottomBarWhenPushed = YES;
- // NewPushViewController(vc);
- // }else
- if (indexPath.row == 0){
- if ([UserHelper isLogin]) {
- NSLog(@"%@",@"已登录");
- JTRecommendViewController*vc = [[JTRecommendViewController alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- NewPushViewController(vc);
- }else{
- NSLog(@"%@",@"未登录");
- NewLoginViewController *vc = [[NewLoginViewController alloc] init];
- [vc setLoginSuccess:^(NSString *string) {
- [self tableViewDidTriggerHeaderRefresh];
- NewPopViewController;
- }];
- NewPushViewController(vc);
- }
- }else if(indexPath.row == 1){
- if ([UserHelper isLogin]) {
- NSLog(@"%@",@"已登录");
- EaseMessageViewController *viewController = [[EaseMessageViewController alloc] initWithConversationChatter:HXKF conversationType:0];
- viewController.title = @"客服在线";
- viewController.hidesBottomBarWhenPushed = YES;
- [[NSNotificationCenter defaultCenter]postNotificationName:@"环信登录成功" object:nil];
- [self.navigationController pushViewController:viewController animated:YES];
- }else{
- NSLog(@"%@",@"未登录");
- NewLoginViewController *vc = [[NewLoginViewController alloc] init];
- [vc setLoginSuccess:^(NSString *string) {
- NewPopViewController;
- }];
- NewPushViewController(vc);
- }
- }else{
- if (self && [self respondsToSelector:@selector(conversationListViewController:didSelectConversationModel:)]) {
- EaseConversationModel *model = [self.dataArray objectAtIndex:indexPath.row-2];
- [self conversationListViewController:self didSelectConversationModel:model];
- } else {
- EaseConversationModel *model = [self.dataArray objectAtIndex:indexPath.row-2];
- MSUMessageChatController *viewController = [[MSUMessageChatController alloc] initWithConversationChatter:model.conversation.conversationId conversationType:0];
- if ([model.conversation.conversationId isEqualToString:HXKF]) {
- viewController.title = @"客服在线";
- }else{
- viewController.title = model.title;
- }
- viewController.hidesBottomBarWhenPushed = YES;
- [self.navigationController pushViewController:viewController animated:YES];
- }
- }
- }
- /*!
- @method
- @brief 获取会话最近一条消息时间
- @discussion
- @param conversationModel 会话model
- @result 返回传入会话model最近一条消息时间
- */
- - (NSString *)_latestMessageTimeForConversationModel:(id<IConversationModel>)conversationModel
- {
- NSString *latestMessageTime = @"";
- EMMessage *lastMessage = [conversationModel.conversation latestMessage];;
- if (lastMessage) {
- double timeInterval = lastMessage.timestamp ;
- if(timeInterval > 140000000000) {
- timeInterval = timeInterval / 1000;
- }
- NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
- [formatter setDateFormat:@"YYYY-MM-dd"];
- latestMessageTime = [formatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:timeInterval]];
- }
- return latestMessageTime;
- }
- #pragma mark - private
- /*!
- @method
- @brief 获取会话最近一条消息内容提示
- @discussion
- @param conversationModel 会话model
- @result 返回传入会话model最近一条消息提示
- */
- - (NSString *)_latestMessageTitleForConversationModel:(id<IConversationModel>)conversationModel
- {
- NSString *latestMessageTitle = @"";
- EMMessage *lastMessage = [conversationModel.conversation latestMessage];
- if (lastMessage) {
- EMMessageBody *messageBody = lastMessage.body;
- switch (messageBody.type) {
- case EMMessageBodyTypeImage:{
- latestMessageTitle = NSEaseLocalizedString(@"[图片]", @"[image]");
- } break;
- case EMMessageBodyTypeText:{
- NSString *didReceiveText = [EaseConvertToCommonEmoticonsHelper
- convertToSystemEmoticons:((EMTextMessageBody *)messageBody).text];
- latestMessageTitle = didReceiveText;
- } break;
- case EMMessageBodyTypeVoice:{
- latestMessageTitle = NSEaseLocalizedString(@"[语音]", @"[voice]");
- } break;
- case EMMessageBodyTypeLocation: {
- latestMessageTitle = NSEaseLocalizedString(@"[位置]", @"[location]");
- } break;
- case EMMessageBodyTypeVideo: {
- latestMessageTitle = NSEaseLocalizedString(@"[视频]", @"[video]");
- } break;
- case EMMessageBodyTypeFile: {
- latestMessageTitle = NSEaseLocalizedString(@"[文件]", @"[file]");
- } break;
- default: {
- } break;
- }
- }
- return latestMessageTitle;
- }
- - (id<IConversationModel>)conversationListViewController:(EaseConversationListViewController *)conversationListViewController
- modelForConversation:(EMConversation *)conversation{
- EaseConversationModel *model = [[EaseConversationModel alloc] initWithConversation:conversation];
- if (model.conversation.type == EMConversationTypeChat) {
- NSDictionary *dic = conversation.lastReceivedMessage.ext;
- if(dic[@"nickname"] == nil || dic[@"avatar"] == nil){
- //头像占位图
- model.avatarImage = [UIImage imageNamed:@"通用用户"];
- }else{
- model.title = dic[@"nickname"];
- model.avatarURLPath = dic[@"avatar"];
- //头像占位图
- model.avatarImage = [UIImage imageNamed:@"通用用户"];
- }
- } else if (model.conversation.type == EMConversationTypeGroupChat) {
- NSString *imageName = @"groupPublicHeader";
- if (![conversation.ext objectForKey:@"subject"])
- {
- NSArray *groupArray = [[EMClient sharedClient].groupManager getJoinedGroups];
- for (EMGroup *group in groupArray) {
- if ([group.groupId isEqualToString:conversation.conversationId]) {
- NSMutableDictionary *ext = [NSMutableDictionary dictionaryWithDictionary:conversation.ext];
- [ext setObject:group.subject forKey:@"subject"];
- [ext setObject:[NSNumber numberWithBool:group.isPublic] forKey:@"isPublic"];
- conversation.ext = ext;
- break;
- }
- }
- }
- NSDictionary *ext = conversation.ext;
- model.title = [ext objectForKey:@"subject"];
- imageName = [[ext objectForKey:@"isPublic"] boolValue] ? @"groupPublicHeader" : @"groupPrivateHeader";
- model.avatarImage = [UIImage imageNamed:imageName];
- //头像占位图
- model.avatarImage = [UIImage imageNamed:@"logo"];
- }
- return model;
- }
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- /*
- #pragma mark - Navigation
- // In a storyboard-based application, you will often want to do a little preparation before navigation
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
- // Get the new view controller using [segue destinationViewController].
- // Pass the selected object to the new view controller.
- }
- */
- @end
|