如何在 Quickblox 中为已读消息集成标记消息功能
Posted
技术标签:
【中文标题】如何在 Quickblox 中为已读消息集成标记消息功能【英文标题】:How to integrate mark message feature for read messages in Quickblox 【发布时间】:2019-07-11 11:10:50 【问题描述】:我正在使用 Chatviewcontroller
或 Quickblox
来显示聊天详细信息。如果消息已读,我想将消息标记为已读。
我看到 QMChatService.m 类中有一个可用的方法
- (void)chatDidReadMessageWithID:(NSString *)messageID
dialogID:(NSString *)dialogID
readerID:(NSUInteger)readerID
------------
if ([self.multicastDelegate respondsToSelector:@selector(chatService:didUpdateMessage:forDialogID:)])
[self.multicastDelegate chatService:self didUpdateMessage:message forDialogID:dialogID];
在这里我看到chatService:didUpdateMessage:
一个方法调用了另一个场景,因此无法识别如何标记消息。
【问题讨论】:
【参考方案1】:我已经这样解决了 QBChatMessage 具有三个属性 readIDs(阅读消息的用户数组)、deliveredIDs(消息传递给的用户数组)、receiverID。
以下是 ChatViewController.m 中的完整代码
-(void)collectionView:(QMChatCollectionView *)collectionView configureCell:(UICollectionViewCell *)cell forIndexPath:(NSIndexPath *)indexPath
QBChatMessage *message = [self.chatDataSource messageForIndexPath:indexPath];
if (message.senderID == [QBSession currentSession].currentUser.ID)
NSString *imageName = @"sent.png";
if((self.dialog.type == QBChatDialogTypePrivate) && [message.readIDs containsObject:@(message.recipientID)])
imageName = @"read.png";
else if((self.dialog.type == QBChatDialogTypePrivate) && [message.deliveredIDs containsObject:@(message.recipientID)])
imageName = @"received.png";
[chatCell markImageView].image = [UIImage imageNamed:imageName];
这里 markImageView 是单元格的 UIImagview 属性。
【讨论】:
以上是关于如何在 Quickblox 中为已读消息集成标记消息功能的主要内容,如果未能解决你的问题,请参考以下文章