3

I am using a custom tableview cell that displays text in chat bubbles and its working fine.

But i want to display images in chat.

For that i am doing belowed steps:

TO choose and upload file:

- (IBAction)btnAttachments:(id)sender{

self.imagePicker = [[UIImagePickerController alloc] init];
self.imagePicker.allowsEditing = NO;
self.imagePicker.delegate = self;
self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

[self presentViewController:self.imagePicker animated:YES completion:nil];}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
UIImage *imgChosen = info[UIImagePickerControllerOriginalImage];
imgChat = imgChosen;

[picker dismissViewControllerAnimated:YES completion:NULL];

// Upload new avatar to Content module
NSData *avatar = [[NSData alloc] initWithData:UIImagePNGRepresentation(imgChat)];
//
//[QBContent TUploadFile:avatar fileName:@"MyAvatar" contentType:@"image/png" isPublic:NO delegate:self];
[QBContent TUploadFile:avatar fileName:@"userChat" contentType:@"image/png" isPublic:YES delegate:self];}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[picker dismissViewControllerAnimated:YES completion:NULL];

}

in Completed with result:

if(result.success && [result isKindOfClass:[QBCFileUploadTaskResult class]])
    {

        QBCFileUploadTaskResult *res = (QBCFileUploadTaskResult *)result;
        NSUInteger uploadedFileID = res.uploadedBlob.ID;

        QBChatMessage *message = [[QBChatMessage alloc] init];
        message.recipientID = self.opponent.ID;

        NSMutableDictionary *msgDict = [[NSMutableDictionary alloc]init];
        [msgDict setValue:[NSNumber numberWithInt:uploadedFileID] forKey:@"fileID"];
        message.customParameters = msgDict;

        [[QBChat instance] sendMessage:message];

    }

To download file:

- (void)chatDidReceiveMessageNotification:(NSNotification *)notification{

QBChatMessage *message = notification.userInfo[kMessage];

if(message.customParameters != nil)
{
    NSUInteger fileID = [message.customParameters[@"fileID"] integerValue];

    // download file by ID
    [QBContent TDownloadFileWithBlobID:fileID delegate:self];
}

in completed with result:

if(result.success && [result isKindOfClass:[QBCFileDownloadTaskResult class]])
    {
        QBCFileDownloadTaskResult *res = (QBCFileDownloadTaskResult *)result;

        if ([res file])
        {

            UIImageView* imageView = [[UIImageView alloc] initWithImage:
            [UIImage imageWithData:[res file]]];
            [self.messages addObject:imageView];

            [self.tblObj reloadData];

        }
    }

Now, How to display that downloaded image in my chat? Instruct me about the custom cell which will be used for displaying images.

Milan Manwar
  • 374
  • 3
  • 10

0 Answers0