// // ChatViewController.m // Youth // // Created by mambaxie on 2022/1/2. // #import "ChatViewController.h" #import "TUIC2CChatViewController.h" #import "TUIPatch.h" #import "TUIGroupChatViewController.h" #import "C2CChatSetttingsViewController.h" #import "TUIMessageDataProvider.h" #import "V2TIMMessage+TUIPatch.h" #import "TUIBaseMessageController+TUIPatch.h" #import "C2CChatViewController.h" #import "ProfileCardViewController.h" #import "VIPViewController.h" //#import "MyVIPCardData.h" //#import "MyVipCarDatas.h" //#import "MyVIPCardCell.h" #import "THGiveVipMessageCell.h" @interface TUIBaseChatViewController () @end @interface ChatViewController () @property (nonatomic, strong) TUIBaseChatViewController *chatVC; @property (nonatomic, strong) UIButton *followButton; @property (nonatomic, strong) UserOtherInfo *otherInfo; @property (nonatomic, weak) id observe; @end @implementation ChatViewController - (BOOL)isGroup { return self.convData.groupID.length > 0; } - (BOOL)enableAutoToolbar { return NO; } - (BOOL)mt_nagationBarTransparent { return NO; } - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; self.chatVC.view.frame = self.view.bounds; self.chatVC.messageController.tableView.backgroundColor = [UIColor clearColor]; } - (void)dealloc { NSLog(@"ChatViewController dealloc"); // [[NSNotificationCenter defaultCenter] removeObserver:self name:@"sendVipMsgnotifi" object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self]; [[NSNotificationCenter defaultCenter] removeObserver:_observe]; [[NSNotificationCenter defaultCenter] removeObserver:self name:@"receivedVipMsgnotifi" object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:@"sendLocationMsgnotifi" object:nil]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if ([self isMovingFromParentViewController]) { // 页面销毁 [self markReaded]; [[V2TIMManager sharedInstance] removeSimpleMsgListener:self]; [[V2TIMManager sharedInstance] removeAdvancedMsgListener:self]; } } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if ([self isMovingToParentViewController]) { // 初次进入页面 [[V2TIMManager sharedInstance] addSimpleMsgListener:self]; [[V2TIMManager sharedInstance] addAdvancedMsgListener:self]; } self.title = self.convData.title; self.chatVC.messageController.tableView.backgroundColor = [UIColor clearColor]; [self updateFollowButton]; } - (void)markReaded { [[V2TIMManager sharedInstance] markC2CMessageAsRead:self.convData.userID succ:^{ ; } fail:^(int code, NSString *desc) { ; }]; } - (void)updateFollowButton { BOOL isFollowing = [self.otherInfo isFollowing]; self.followButton.selected = isFollowing; self.followButton.backgroundColor = isFollowing ? [UIColor clearColor] : COLOR_WITH_RGB(0xFFBE00); } - (void)viewDidLoad { [super viewDidLoad]; [UserService loadUserOtherInfosWithUserIDs:@[self.convData.userID] userCache:YES comoletion:^(id _Nullable rsp, NSError * _Nullable error) { [self setupUI]; }]; // WeakSelf(self); [[V2TIMManager sharedInstance] getTotalUnreadMessageCount:^(UInt64 totalCount) { // 获取成功,totalCount 为未读消息总数 // 更新 UI 上的未读数 // [weakself.customTabbar setNumAtIndex:1 num:totalCount]; [UIApplication sharedApplication].applicationIconBadgeNumber = totalCount; } fail:^(int code, NSString *desc) { // 获取失败 // [weakself.tabBarController.tabBar setNumAtIndex:1 num:0]; [UIApplication sharedApplication].applicationIconBadgeNumber = 0; }]; [[NSNotificationCenter defaultCenter] removeObserver:self]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sengVipMsg:) name:@"sendVipMsgnotifi" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sengLocationMsg:) name:@"sendLocationMsgnotifi" object:nil]; //接收支付后消息 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveVipMsg:) name:@"receivedVipMsgnotifi" object:nil]; // _observe = [[NSNotificationCenter defaultCenter] addObserverForName:@"sendVipMsgnotifi" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { // // NSLog(@"收到了通知"); // [PYAppService sendVipVC:@"vip_page" forUserID:self.convData.userID]; // // [[NSNotificationCenter defaultCenter] removeObserver:self. observe]; // // // }]; } -(void)sengLocationMsg:(NSNotification *)noti { [ToastUtil showToast:@"工程师疯狂打码中......"]; } -(void)sengVipMsg:(NSNotification *)noti { //测试 /* // 创建自定义消息,设置消息的 businessID、展示文本、跳转链接(以下代码需要您自己实现) NSError *error; NSString *businessID = @"custom_message_vip"; NSString *title_name = @"test会员"; NSDictionary *param = @{@"businessID": businessID, @"title_name":title_name}; NSData *data = [NSJSONSerialization dataWithJSONObject:param options:0 error:&error]; V2TIMMessage *message = [[V2TIMManager sharedInstance] createCustomMessage:data]; [self.chatVC sendMessage:message]; return; */ if ([UserService currentUser].isVIP) { [PYAppService sendVipVC:@"vip_page" forUserID:self.convData.userID]; // [[NSNotificationCenter defaultCenter] removeObserver:self name:@"sendVipMsgnotifi" object:nil]; // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sengVipMsg:) name:@"sendVipMsgnotifi" object:nil]; }else { [ToastUtil showToast:@"需要成为会员才可以赠送VIP哦~"]; } } -(void)receiveVipMsg:(NSNotification *)noti { NSString *vipType = noti.object; // NSLog(@"vipType==%@",vipType); NSString *text = vipType; // NSString *link = @"https://cloud.tencent.com/document/product/269/3794"; NSError *error = nil; NSDictionary *param = @{BussinessID: BussinessID_TextLink, @"text":text}; NSData *data = [NSJSONSerialization dataWithJSONObject:param options:0 error:&error]; if(error) { NSLog(@"[%@] Post Json Error", [self class]); return; } V2TIMMessage *message = [TUIMessageDataProvider getCustomMessageWithJsonData:data]; [self.chatVC sendMessage:message]; //发送消息成功后退出VipView控制器 [[NSNotificationCenter defaultCenter] postNotificationName:@"vipViewClosenotifi" object:vipType]; } - (void)setupUI { // UIButton *back = [UIButton buttonWithType:UIButtonTypeCustom]; // [back setTitle:@"12" forState:UIControlStateNormal]; //// back addTarget:self action:@selector(<#selector#>) forControlEvents:<#(UIControlEvents)#> // back.titleLabel.font = [UIFont systemFontOfSize:16]; // self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:back]; self.otherInfo = [UserService userOtherInfoForUserID:self.convData.userID]; UIButton *followButton = [UIButton buttonWithType:UIButtonTypeCustom]; followButton.size = CGSizeMake(49, 26); followButton.layer.cornerRadius = 10; [followButton setTitle:@"已关注" forState:UIControlStateSelected]; [followButton setTitleColor:COLOR_WITH_RGB(0xB3B3B3) forState:UIControlStateSelected]; [followButton setTitle:@"关注" forState:UIControlStateNormal]; [followButton setTitleColor:COLOR_WITH_RGB(0x040000) forState:UIControlStateNormal]; followButton.backgroundColor = COLOR_WITH_RGB(0xFFBE00); followButton.titleLabel.font = MT_FONT_REGULAR_NO_SCALE_SIZE(13); self.followButton = followButton; WeakSelf(self); [followButton addTouchUpInsideWithAction:^(UIButton * _Nullable button) { InputStatus status = weakself.chatVC.inputController.status; if (status == Input_Status_Input_Talk) { // [weakself.chatVC.inputController.inputBar performSelector:@selector(clickKeyboardBtn:) withObject:weakself.chatVC.inputController.inputBar.keyboardButton]; } [weakself.chatVC.inputController reset]; // 收起键盘 int userID = [UserService userIDFromIMUserID:weakself.convData.userID].intValue; if (button.isSelected) { [MTAlertView showWithSetupBlcok:^(MTAlertViewConfig *config) { config.message = @"是否取消关注"; config.cancelTitle = @"取消"; config.otherTitle = @"是的"; config.otherHandler = ^(MTAlertButton *btn) { [UserService unfollowUserWIthUserID:userID completion:^(id _Nullable rsp, NSError * _Nullable error) { if (!error) { [weakself.otherInfo updateFollowState:!button.isSelected]; [weakself updateFollowButton]; } }]; }; }]; } else { [MTAlertView showWithSetupBlcok:^(MTAlertViewConfig *config) { config.title = @"防骚扰提醒"; config.message = @"若两人互相认可(互关),双方发送的内容将不再有鉴黄暴力等检查"; config.cancelTitle = @"取消"; config.otherTitle = @"关注"; config.otherHandler = ^(MTAlertButton *btn) { [UserService followUserWIthUserID:userID completion:^(id _Nullable rsp, NSError * _Nullable error) { if (!error) { [weakself.otherInfo updateFollowState:!button.isSelected]; [weakself updateFollowButton]; } }]; }; }]; } }]; UIView *followButtonContainer = [[UIView alloc] initWithFrame:followButton.bounds]; [followButtonContainer addSubview:followButton]; UIBarButtonItem *followItem = [[UIBarButtonItem alloc] initWithCustomView:followButtonContainer]; dispatch_async(dispatch_get_main_queue(), ^{ followButton.centerY = followButtonContainer.height * 0.5; }); UIBarButtonItem *settingsItem = [[UIBarButtonItem alloc] initWithImage:ImageNamed(@"chat_settings") style:UIBarButtonItemStylePlain target:self action:@selector(openSettingVC)]; self.navigationItem.rightBarButtonItems = @[settingsItem, followItem]; // 创建会话信息 TUIChatConversationModel *data = [[TUIChatConversationModel alloc] init]; data.groupID = self.convData.groupID; data.groupType = self.convData.groupType; data.userID = self.convData.userID; data.conversationID = self.convData.conversationID; TUIBaseChatViewController *vc = nil; if ([self isGroup]) { vc = [[TUIGroupChatViewController alloc] init]; } else { // 创建 TUIC2CChatViewController vc = [[C2CChatViewController alloc] init]; } [vc setConversationData:data]; if (self.isInActivityRoom) { dispatch_async(dispatch_get_main_queue(), ^{ [vc.messageController patch_setIsInActivityRoom:YES]; }); } // 把 TUIC2CChatViewController 添加到自己的 ViewController [self addChildViewController:vc]; [self.view addSubview:vc.view]; self.view.backgroundColor = BG_COLOR; vc.view.backgroundColor = [UIColor clearColor]; UIImageView *bgImageView = [[UIImageView alloc] init]; bgImageView.image = ImageNamed(@"TH_chat_bg"); bgImageView.x = FIX_SIZE(37.5); bgImageView.width = self.view.width - bgImageView.x * 2; CGSize imageSize = bgImageView.image.size; bgImageView.height = bgImageView.width * imageSize.height / imageSize.width; // bgImageView.image = UIImageMake(@"TH_BaseLocalBg"); // bgImageView.frame = self.view.bounds; [self.view insertSubview:bgImageView atIndex:0]; bgImageView.centerY = self.view.height * 0.5; vc.messageController.delegate = self; self.chatVC = vc; [TUIPatch patchChatVC:vc]; //服务器处理此逻辑 // TUIInputBar *inpuBar = vc.inputController.inputBar; // [inpuBar.moreButton removeTarget:inpuBar action:@selector(clickMoreBtn:) forControlEvents:UIControlEventTouchUpInside]; // WeakSelf(inpuBar); // [inpuBar.moreButton addTouchUpInsideWithAction:^(UIButton * _Nullable button) { // if ([UserService currentUser].isVIP || weakself.otherInfo.relation == RelationTypeFriends) { // [weakinpuBar performSelector:@selector(clickMoreBtn:) withObject:button]; // } else { // [MTAlertView showWithSetupBlcok:^(MTAlertViewConfig *config) { // config.title = @"双方互关后才可以发送图片和语音"; // config.message = @"开通VIP后也可向陌生人发送图片和语音\n28元即可开通90天VIP"; // config.cancelTitle = @"下次"; // config.otherTitle = @"开通VIP"; // config.otherHandler = ^(MTAlertButton *button) { // [PYAppService showFastVipToBuy:@"chat_pic"]; // }; // }]; // } // }]; // // [inpuBar.micButton removeTarget:inpuBar action:@selector(clickVoiceBtn:) forControlEvents:UIControlEventTouchUpInside]; // [inpuBar.micButton addTouchUpInsideWithAction:^(UIButton * _Nullable button) { // if ([UserService currentUser].isVIP || weakself.otherInfo.relation == RelationTypeFriends) { // [weakinpuBar performSelector:@selector(clickVoiceBtn:) withObject:button]; // } else { // [MTAlertView showWithSetupBlcok:^(MTAlertViewConfig *config) { // config.title = @"双方互关后才可以发送图片和语音"; // config.message = @"开通VIP后也可向陌生人发送图片和语音\n28元即可开通90天VIP"; // config.cancelTitle = @"下次"; // config.otherTitle = @"开通VIP"; // config.otherHandler = ^(MTAlertButton *button) { // [PYAppService showFastVipToBuy:@"chat_voice"]; // }; // }]; // } // }]; UIView *titleView = [[UIView alloc] init]; titleView.height = 44.0; UILabel *titleLabel = [[UILabel alloc] init]; titleLabel.font = MT_FONT_MEDIUM_SIZE(15); titleLabel.textColor = [self.otherInfo isVIP] ? COLOR_WITH_RGB(0xFDCF7F) : [UIColor whiteColor]; titleLabel.text = self.convData.title; UIImageView *genderIcon = [[UIImageView alloc] init]; genderIcon.size = [User genderSize]; genderIcon.backgroundColor = [UIColor clearColor]; genderIcon.image = [_otherInfo genderImage]; if (!genderIcon.image) { genderIcon.width = 0; } [titleView addSubview:genderIcon]; PYImageView *vipTageImageView = [[PYImageView alloc] init]; vipTageImageView.contentMode = UIViewContentModeScaleAspectFit; vipTageImageView.size = CGSizeMake(FIX_SIZE(12), FIX_SIZE(12)); [titleView addSubview:vipTageImageView]; vipTageImageView.hidden = ![self.otherInfo isVIP]; vipTageImageView.image = ImageNamed(@"vip_tag"); // vipTageImageView.imageUrl = self.otherInfo.vip_flag_img; genderIcon.centerY = vipTageImageView.centerY = titleView.height * 0.5; CGFloat maxLabelWidth = self.view.width - 110 * 2 - 4 - (vipTageImageView.hidden ? 0 : (vipTageImageView.width + 4) - genderIcon.width - FIX_SIZE(6)); [titleLabel sizeToFit]; titleLabel.width = MIN(maxLabelWidth, titleLabel.width); [titleView addSubview:titleLabel]; titleLabel.height = titleView.height; genderIcon.x = titleLabel.right + 2; vipTageImageView.x = genderIcon.right + 4; titleView.width = vipTageImageView.right; if (self.otherInfo.is_manager) { UIView* managerView = [[UIView alloc]initWithFrame:CGRectMake(genderIcon.right + 8, genderIcon.y + (genderIcon.height - 16)/2.0, 34, 16)]; if(self.otherInfo.isVIP){ managerView.left = vipTageImageView.right + 2; }else{ managerView.left = genderIcon.right + 2; } managerView.layer.cornerRadius = 8; managerView.layer.masksToBounds = YES; // gradient CAGradientLayer *gl = [CAGradientLayer layer]; gl.frame = CGRectMake(0,0,managerView.width,managerView.height); gl.startPoint = CGPointMake(0, 0.5); gl.endPoint = CGPointMake(1, 0.5); gl.colors = @[(__bridge id)HEX_COLOR(0xE4B18B).CGColor, (__bridge id)HEX_COLOR(0xFFF4EC).CGColor, (__bridge id)HEX_COLOR(0xE4B18B).CGColor]; gl.locations = @[@(0), @(0.5f), @(1.0f)]; [managerView.layer addSublayer:gl]; UILabel* managerLab = [[UILabel alloc]initWithFrame:managerView.bounds]; managerLab.text = @"官方"; managerLab.textColor = HEX_COLOR(0x000000); managerLab.textAlignment = NSTextAlignmentCenter; managerLab.font = MT_FONT_MEDIUM_SIZE(10); [managerView addSubview:managerLab]; // [nianVipLab bringSubviewToFront:nianVipLab.text]; [titleView addSubview:managerView]; titleView.width = managerView.right; } self.navigationItem.titleView = titleView; [titleView addTapWithAction:^{ [PYAppService showUserCardVCWithUserID:[UserService userIDFromIMUserID:self.convData.userID].intValue]; }]; [self updateFollowButton]; } - (void)openSettingVC { if ([self isGroup]) { } else { [self.navigationController pushViewController:[[C2CChatSetttingsViewController alloc] initWithConversationData:self.chatVC.conversationData] animated:YES]; } } #pragma mark - TUIBaseMessageControllerDelegate /** * 收到新消息的函数委托 * 您可以通过该回调实现:根据传入的 data 初始化新消息并进行新消息提醒。 * * @param controller 委托者,消息控制器 * @param message 新消息 * * @return 返回需要显示的新消息单元。该消息单元的信息与数据,来自于参数中的 data 参数。 */ - (TUIMessageCellData *)messageController:(TUIBaseMessageController *)controller onNewMessage:(V2TIMMessage *)msg { // 当在活动房间时,设置为MsgDirectionIncoming使得头像均在左侧 if (self.isInActivityRoom) { [msg patch_setIsInActivityRoom:YES]; } // if (self.onNewMessage) { // self.onNewMessage(msg); // } if (msg.elemType == V2TIM_ELEM_TYPE_CUSTOM) { if (msg.customElem.data) { NSDictionary *param = [NSJSONSerialization JSONObjectWithData:msg.customElem.data options:NSJSONReadingAllowFragments error:nil]; if ([param isKindOfClass:NSDictionary.class]) { NSString *typeIdStr = param[@"businessID"]; if ([typeIdStr isEqualToString:@"custom_message_vip"]) { return [THGiveVipMessageCellData getCellData:msg]; } } } } if ([self.chatVC respondsToSelector:@selector(messageController:onNewMessage:)]) { return [self.chatVC messageController:controller onNewMessage:msg]; } return nil; } - (void)messageController:(TUIBaseMessageController *)controller onSelectMessageAvatar:(TUIMessageCell *)cell { int userID = [UserService userIDFromIMUserID:cell.messageData.identifier].intValue; if (userID > 0) { [PYAppService pushViewControllerAnimated:[[ProfileCardViewController alloc] initWithUserID:userID]]; } } /** * 显示消息数据委托 * 您可以通过该回调实现:根据传入的 data 初始化消息气泡并进行显示 * * @param controller 委托者,消息控制器 * @param data 需要显示的消息数据 * * @return 返回需要显示的消息单元。该消息单元的信息与数据,来自于参数中的 data 参数。 */ - (TUIMessageCell *)messageController:(TUIBaseMessageController *)controller onShowMessageData:(TUIMessageCellData *)cellData { NSLog(@"cellData===%@",cellData); if (self.isInActivityRoom) { cellData.showName = YES; } if ([cellData isKindOfClass:THGiveVipMessageCellData.class]) { THGiveVipMessageCell *giveVipCell = [[THGiveVipMessageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"THGiveVipMessageCell"]; [giveVipCell fillWithData:cellData]; return giveVipCell; } //末班添加 // if ([cellData isKindOfClass:NSClassFromString(@"MyVipCarDatas")]) { // MyVIPCardCell *myCell = [[MyVIPCardCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyVIPCardCell"]; // [myCell fillWithData:(MyVIPCardData *)cellData]; // return myCell; // } // if ([self.chatVC respondsToSelector:@selector(messageController:onShowMessageData:)]) { return [self.chatVC messageController:controller onShowMessageData:cellData]; } return nil; } - (void)onRecvNewMessage:(V2TIMMessage *)msg { if (msg.elemType == V2TIM_ELEM_TYPE_CUSTOM) { V2TIMTextElem *textElem = msg.textElem; NSString *text = textElem.text; NSLog(@"文本信息 : %@", text); // 查看 textElem 后面还有没更多 Elem V2TIMElem *elem = textElem.nextElem; while (elem != nil) { // 判断 elem 类型 if ([elem isKindOfClass:[V2TIMCustomElem class]]) { V2TIMCustomElem *customElem = (V2TIMCustomElem *)elem; NSData *customData = customElem.data; NSLog(@"自定义信息 : %@",customData); } // 继续查看当前 elem 后面还有没更多 elem elem = elem.nextElem; } // elem 如果为 nil,表示所有 elem 都已经解析完 } if ([msg.sender isEqualToString:self.convData.userID]) { [self markReaded]; } } - (void)onRecvC2CTextMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info text:(NSString *)text { if ([info.userID isEqualToString:self.convData.userID]) { [self markReaded]; } } - (void)didTapInMessageController:(TUIBaseMessageController *)controller { if ([self.chatVC respondsToSelector:@selector(didTapInMessageController:)]) { [self.chatVC didTapInMessageController:controller]; } } - (void)didHideMenuInMessageController:(TUIBaseMessageController *)controller { if ([self.chatVC respondsToSelector:@selector(didHideMenuInMessageController:)]) { [self.chatVC didHideMenuInMessageController:controller]; } } - (BOOL)messageController:(TUIBaseMessageController *)controller willShowMenuInCell:(UIView *)view { if ([self.chatVC respondsToSelector:@selector(messageController:willShowMenuInCell:)]) { return [self.chatVC messageController:controller willShowMenuInCell:view]; } return NO; } - (void)messageController:(TUIBaseMessageController *)controller willDisplayCell:(TUIMessageCell *)cell withData:(TUIMessageCellData *)cellData { if ([self.chatVC respondsToSelector:@selector(messageController:willDisplayCell:withData:)]) { [self.chatVC messageController:controller willDisplayCell:cell withData:cellData]; } } - (void)messageController:(TUIBaseMessageController *)controller onSelectMessageContent:(TUIMessageCell *)cell { if ([self.chatVC respondsToSelector:@selector(messageController:onSelectMessageContent:)]) { [self.chatVC messageController:controller onSelectMessageContent:cell]; } } - (void)messageController:(TUIBaseMessageController *)controller onSelectMessageMenu:(NSInteger)menuType withData:(TUIMessageCellData *)data { if ([self.chatVC respondsToSelector:@selector(messageController:onSelectMessageMenu:withData:)]) { [self.chatVC messageController:controller onSelectMessageMenu:menuType withData:data]; } } - (void)messageController:(TUIBaseMessageController *)controller onRelyMessage:(TUIMessageCellData *)data { if ([self.chatVC respondsToSelector:@selector(messageController:onRelyMessage:)]) { [self.chatVC messageController:controller onRelyMessage:data]; } } - (void)messageController:(TUIBaseMessageController *)controller onReferenceMessage:(TUIMessageCellData *)data { if ([self.chatVC respondsToSelector:@selector(messageController:onReferenceMessage:)]) { [self.chatVC messageController:controller onReferenceMessage:data]; } } - (void)messageController:(TUIBaseMessageController *)controller modifyMessage:(nonnull TUIMessageCellData *)cellData reactEmoji:(NSString *)emojiName { if ([self.chatVC respondsToSelector:@selector(messageController:modifyMessage:reactEmoji:)]) { [self.chatVC messageController:controller modifyMessage:cellData reactEmoji:emojiName]; } } - (void)messageController:(TUIBaseMessageController *)controller onReEditMessage:(TUIMessageCellData *)data { if ([self.chatVC respondsToSelector:@selector(messageController:onReEditMessage:)]) { [self.chatVC messageController:controller onReEditMessage:data]; } } #pragma mark - V2TIMSimpleMsgListener - (void)onRecvC2CCustomMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info customData:(NSData *)data { NSString *notifyMsg = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; if ([notifyMsg isEqual:@"follow_relation_refresh"]) { //废弃 //之前互关后,才可以发图片语音,交给服务器处理即可,此处不再需要处理 } } @end