如何使用 Quick blox 示例更新 ChatList 中的消息状态?

How to update message status in ChatList using Quick blox sample?

我正在使用 Quick blox,我下载了使用 QMChatViewControllerQMServices.

的示例应用程序 (https://github.com/QuickBlox/quickblox-ios-sdk/tree/master/sample-chat)

我正在使用 ChatViewController 中的 MessageStatusStringBuilder class 方法来获取消息的状态 (read/delivered/sent)(这里消息不是字符串,它是一个实例QBChatMessage) 在 ChatViewController 中,以便在调用 QMChatServiceDelegate 回调时显示消息状态。

我还需要在每个对话框下显示 DialogsViewController 中最后一条消息的状态 (read/delivered/sent)。 但是在 DialogsViewController lastTextMessage 中是一个字符串而不是 QBChatMessage 实例。

如何更新此消息状态?

一个优点是我也会在 DialogsViewController 中从这个 QMChatServiceDelegate 获得回调,即使我无法从中找到消息的状态。

那么如何处理呢?

首先,您应该使用 date_send 作为键并使用对话框的 lastMessageDate 作为值来获取带有扩展请求的消息。然后使用 MessageStatusStringBuilder class 的实例,您可以获得最后一条消息的状态。

 QBChatDialog *dialog = ... // your dialog

 QBResponsePage *resPage = [QBResponsePage responsePageWithLimit:1 skip:0];

 NSMutableDictionary *extendedRequest = @{@"date_sent" : [NSString stringWithFormat:@"%tu", (NSUInteger)[dialog.lastMessageDate timeIntervalSince1970]]}.mutableCopy;

 [QBRequest messagesWithDialogID:dialog.ID extendedRequest:extendedRequest forPage:resPage successBlock:^(QBResponse *response, NSArray *messages, QBResponsePage *responcePage) {

                                 NSLog(@"status = %@",[self.stringBuilder statusFromMessage:[messages firstObject]]);

  } errorBlock:^(QBResponse *response) {

                                 NSLog(@"error: %@", response.error);

  }];