JSQMessageViewController实现

时间:2018-01-17 08:28:50

标签: ios messaging

我已经集成了JSQMessagesViewController对于聊天,我有一个问题来区分发送者和接收者消息显示右侧和左侧。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

聊天控制器配置:

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

2):JSQMessagesViewController具有名称senderId,senderDisplayName,myImage的属性。因此,您使用登录用户Id,displayName和Image(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中,因此您可以相应地使用。 希望这会对你有所帮助。

答案 2 :(得分:0)

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