我想要实现什么是没有进入聊天室,使用QuickBlox SDK IOS版本2.0.12 autodownload附件功能,启动所有对话(聊天室),以autodownload附件中quickblox
要做到这一点我想要的启动用户登录后所有的对话框(聊天室)。
使用当前api,用户可以看到对话框列表(聊天室),并且一次只进入一个房间。 因此,假设登录用户有2个聊天室(ChatRoom A,ChatRoom B),所以当他进入'聊天室A'时,他只能通过chatDidReceiveMessageNotification/chatRoomDidReceiveMessageNotification接收'ChatRoom A'的消息/附件作为通知。
因此,当用户收到'ChatRoom B'的消息/附件时,他将无法访问,直到他进入'聊天室B'。
有它的工作,我在DialogsViewController创建以下方法: 正试图加入所有对话框(聊天室)
-(void)startallrooms
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(chatDidReceiveMessageNotification:)
name:kNotificationDidReceiveNewMessage object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(chatRoomDidReceiveMessageNotification:)
name:kNotificationDidReceiveNewMessageFromRoom object:nil];
QBChatRoom *chatRooms;
for (int i=0; i<=self.dialogs.count; i++) {
QBChatDialog *dialog = self.dialogs[i];
chatRooms = [dialog chatRoom];
[[ChatService instance] joinRoom:chatRooms completionBlock:^(QBChatRoom *joinedChatRoom) {
// joined
}];
}
}
而且从DialogsViewController从completedWithResult调用。
- (void)completedWithResult:(Result *)result{
if (result.success && [result isKindOfClass:[QBDialogsPagedResult class]]) {
[self startallrooms];
..
..
}
}
它给了一个错误:在下面的方法从ChatService.m
EXC_BAD_ACCESS- (void)chatRoomDidEnter:(QBChatRoom *)room{
}
但是,当我尝试加入只有一个聊天室,它并没有给我任何错误和工作完全正常。 (只检查与此替换for循环 - >为(INT I = 0;我< = 0;在startallrooms方法,我上述我++))
所以,我在哪里去错和甚至如果我解决了这个问题,从内存的角度来看,是否可以启动所有房间(如果用户有数千个房间)?实现后,我也会在Android上做。
感谢您的回复伊戈尔,但仍然同样的问题,它是在chatRoomDidEnter,在这一行中发生错误:self.joinRoomCompletionBlock(room);如EXC_BAD_ACCESS – SML 2015-02-09 15:54:16
您是如何定义myRooms的? – 2015-02-09 16:09:54
@property(强,非原子)NSMutableArray * myRooms; – SML 2015-02-09 16:11:34