【发布时间】:2015-02-06 14:33:14
【问题描述】:
我要实现的是自动下载附件功能,无需进入聊天室,使用 QuickBlox SDK iOS 版本 2.0.12,
为此,我想在登录后启动用户所属的所有对话(聊天室)。
使用当前的 api,用户可以看到对话列表(聊天室)并且一次只能进入一个房间。 因此,假设登录用户有 2 个聊天室(ChatRoom A,ChatRoom B),因此当他进入“ChatRoom A”时,他只能在 chatDidReceiveMessageNotification / chatRoomDidReceiveMessageNotification 中接收“ChatRoom A”的消息/附件作为通知。
因此,当用户收到“ChatRoom B”的消息/附件时,他将无法访问,直到他进入“ChatRoom 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{
}
但是当我尝试只加入一个聊天室时,它不会给我任何错误并且工作得很好。 (只需检查在我上面提到的 startallrooms 方法中用 this -> for (int i=0; ifor loop)
那么,我哪里出错了,即使我解决了这个问题,从内存的角度来看是否可以启动所有房间(如果用户有数千个房间)?在实现相同之后,我也会在 Android 上进行。
【问题讨论】: