JSQMessageViewController 实现

JSQMessageViewController Implementation

我已经集成了用于聊天的 JSQMessagesViewController,我在区分发送者和接收者消息显示的右侧和左侧时遇到了问题。我该如何解决这个问题?

override func collectionView(_ collectionView: JSQMessagesCollectionView, messageBubbleImageDataForItemAt indexPath: IndexPath) -> JSQMessageBubbleImageDataSource {

    return messages[indexPath.item].senderId == self.senderId ? outgoingBubble : incomingBubble
}

聊天控制器配置:

1): 如果您使用的是 JSQMessagesViewController,那么您的聊天控制器应该继承自 JSQMessagesViewController。

2): JSQMessagesViewController 具有名称 senderId、senderDisplayName、myImage 的属性。因此,您将这些属性分配给登录用户 ID、显示名称和图像(self.senderId = loginUser.id 等),因为登录用户是发件人。

  self.senderId = loginUser.uniqueId;
  self.displayName = loginUser.dispalyName; // if you have
  self.otherImage = [[JSQMessagesAvatarImage alloc] 
  initWithAvatarImage:"loginUserImage if you have" 
  highlightedImage:"highlitedImage if you have" 
  placeholderImage:"placeholder image if you have"];

3): JSQMessagesViewController 也有名称为otherImage 的属性。所以您应该将此 属性 分配给您喜欢聊天的其他用户图像。

  self.otherImage = [[JSQMessagesAvatarImage alloc] 
  initWithAvatarImage:"userImage if you have" 
  highlightedImage:"highlitedImage if you have" 
  placeholderImage:"placeholder image if you have"];

注意:您应该在 viewDidLoad() 或 viewWillAppear() 中执行此配置。此代码在 objective-C 中,因此您可以相应地使用。 希望对您有所帮助。

您应该首先在 self.senderId 中设置您自己的 userId 作为进入 else 部分的 messageBubbleImageDataForItemAt 中的条件。这就是为什么所有气泡只显示在左侧的原因。