注册

急! iOS端修改群组名称后会话列表拉到的数据不变,怎么搞

还有三天就要交工了,实在弄不明白修改逻辑会,求帮忙
已邀请:

Half12345

赞同来自: fat1

要先获取下与userid相关的群组列表,然后再显示才行。

TAT

/*!
 @brief 当前登陆用户的会话对象列表
 */
@property (nonatomic, readonly) NSArray *conversations;
 
这个方法获取到的会话列表没有变化,用接口获取群组信息是已经改了的,我郁闷

TAT

cell.name = [conversation.ext objectForKey:@"groupSubject"];
 
conversation.ext 是这个扩展属性没更改的原因,这个可以改吗
什么版本?demo试了吗?

江南孤鹜 - 技术改变世界,创新驱动中国.QQ:364223587

因为[[EaseMob sharedInstance].chatManager groupList]方法是从本地缓存中获取群组列表信息,所以,修改群名称后,需要调用asyncFetchMyGroupsListWithCompletion方法(从服务端获取最新的群列表信息),从而触发本地群组列表的缓存刷新。在ConversationListController中,群组的名称是通过遍历 [[EaseMob sharedInstance].chatManager groupList]获取最新的群信息,然后重组self.conversation.ext字典,这样才能显示最新的群名称。
 请参考:http://community.easemob.com/question/5863
 
补充,除了ConversationListController里遇到群组名称没有及时更新的问题之外,ChatViewController也会出现这个问题,解决方法就是仿照ConversationListController从[[EaseMob sharedInstance].chatManager groupList] 获取最新的群详情。


ChatViewController.m中增加函数:
[self resetConversation];即可
- (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated];
if (self.conversation.conversationType == eConversationTypeGroupChat) {
if ([[self.conversation.ext objectForKey:@"groupSubject"] length])
{
[self resetConversation];// 更改群昵称后,需要用此方法才能获取最新的群昵称
self.title = [self.conversation.ext objectForKey:@"groupSubject"];
}
}
}

// 获取群组的最新详情
-(void)resetConversation{
NSArray *groupArray = [[EaseMob sharedInstance].chatManager groupList];
for (EMGroup *group in groupArray) {
if ([group.groupId isEqualToString:self.conversation.chatter]) {

NSMutableDictionary *ext = [NSMutableDictionary dictionaryWithDictionary:self.conversation.ext];
[ext setObject:group.groupSubject forKey:@"groupSubject"];
[ext setObject:[NSNumber numberWithBool:group.isPublic] forKey:@"isPublic"];
NSString *groupSubject = [ext objectForKey:@"groupSubject"];
NSString *conversationSubject = [self.conversation.ext objectForKey:@"groupSubject"];
if (groupSubject && conversationSubject && ![groupSubject isEqualToString:conversationSubject]) {
self.conversation.ext = ext;
}
break;
}
}
}

要回复问题请先登录注册