0

I am using JSQMessagesViewController to display a chat UI.How to display images from url in the chat screen?I have gone through github and stackoverflow, but not correctly getting what we need?

Relevant links i went through are https://github.com/jessesquires/JSQMessagesViewController/issues/476

and

https://github.com/jessesquires/JSQMessagesViewController/issues/582

Any thoughts are welcome

Suraj K Thomas
  • 5,773
  • 4
  • 52
  • 64

2 Answers2

1

Try,

 ZSSMessagesAvatarImage *avatarImage = [self.avatars objectForKey:message.senderId];
if (avatarImage.url) {

    [cell.avatarImageView setImageWithURLRequest:[NSURLRequest requestWithURL:avatarImage.url] placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {

        cell.avatarImageView.image = image;

    } failure:nil];

}
cell.avatarImageView.clipsToBounds = YES;
cell.avatarImageView.layer.cornerRadius = 22;
cell.avatarImageView.hidden = NO;

Reference : https://github.com/jessesquires/JSQMessagesViewController/issues/1302

OR

 if(object[PF_CHAT_PICTURE])
{
UIImageView *imageView = [[UIImageView alloc] init];
NSString *imgUrl = [object[PF_CHAT_PICTURE] valueForKey:@"url"];

UIImage *image = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:imgUrl];
if(image == nil)
{
    NSURL *imageUrl = [NSURL URLWithString:imgUrl];

    [imageView setImageWithURL:imageUrl completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)
    {
        JSQPhotoMediaItem *mediaItem = [[JSQPhotoMediaItem alloc] initWithImage:image];
        JSQMessage *message = [[JSQMessage alloc] initWithSenderId:user.objectId senderDisplayName:user[PF_USER_FULLNAME] date:object.createdAt media:mediaItem];
        [messages addObject:message];
    }];
}
else
{
    JSQPhotoMediaItem *mediaItem = [[JSQPhotoMediaItem alloc] initWithImage:image];
    message = [[JSQMessage alloc] initWithSenderId:user.objectId senderDisplayName:user[PF_USER_FULLNAME] date:object.createdAt media:mediaItem];
}
}
else
{
message = [[JSQMessage alloc] initWithSenderId:user.objectId senderDisplayName:user[PF_USER_FULLNAME] date:object.createdAt text:object[PF_CHAT_TEXT]];
}

Reference : How to send Pictures using JSQMessagesViewController?

Community
  • 1
  • 1
Ketan Parmar
  • 27,092
  • 9
  • 50
  • 75
1

Solution on Swift 4

You can use library "SDWebImage"

Write to the method:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell

cell.avatarImageView.sd_setImage(with: URL(string: "YOUR_URL"))
cell.avatarImageView.sd_setShowActivityIndicatorView(true)
Bogdan Bystritskiy
  • 1,325
  • 12
  • 10