gpt4 book ai didi

android - 启动所有对话框(聊天室)以自动下载 quickblox 中的附件

转载 作者:行者123 更新时间:2023-11-29 10:33:23 28 4
gpt4 key购买 nike

我想实现的是自动下载附件功能,无需进入 ChatRoom,使用 QuickBlox SDK iOS 版本 2.0.12,

为此,我想在登录后启动用户所属的所有对话框(聊天室)。

使用当前的 API,用户可以看到对话框(聊天室)列表并且一次只能进入一个房间。因此,假设登录用户有 2 个聊天室(ChatRoom A、ChatRoom B),因此当他进入“ChatRoom A”时,他只能接收“ChatRoom A”的消息/附件作为 chatDidReceiveMessageNotification/chatRoomDidReceiveMessageNotification 中的通知。

因此,当用户收到“聊天室 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{
}

但是当我尝试只加入一个 ChatRoom 时,它没有给我任何错误并且工作得很好。(只需在我上面提到的 startallrooms 方法中检查用这个 -> for (int i=0; i<=0; i++) 替换 for loop)

那么,我哪里出错了,即使我解决了这个问题,从内存的角度来看启动所有房间是否可行(如果用户有数千个房间)?实现相同的方法后,我也会在 Android 上进行。

最佳答案

如果查看 ChatService 类内部,您可能会看到在成功 -chatRoomDidEnter 之后,完成 block 将被释放。这意味着第二次调用该方法将导致 EXC_BAD_ACCESS。只是不要释放 block 。

关于android - 启动所有对话框(聊天室)以自动下载 quickblox 中的附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28368059/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com