How to send a video file as an attachment in iOS QuickBlox?

Quickblox iOS Video Ads

I have included the Quickblox iOS library (Objc) in my chat module application.

Images as an attachment in QBRequest TUploadFile mode is possible. But I can not find any working solution to create a video attachment file for the same query.

I confirmed by reading a document from Quickblog that says: "Video can be enabled in the Quickblox chat SDK."

Does anyone have any working solution for creating a video file with this?

Below is the code for downloading video in QBRequest TUploadFile format.

Thanks in advance!

- (void)uploadAndSendAttachmentMessage:(QBChatMessage*)message toDialog:(QBChatDialog*)dialog withChatService:(QMChatService*)chatService withAttachedVideo:(NSData*)videoData completion:(QBChatCompletionBlock)completion { [self changeMessageAttachmentStatus:QMMessageAttachmentStatusLoading forMessage:message]; [QBRequest TUploadFile:videoData fileName:@"attachment video" contentType:@"video/mp4" isPublic:YES successBlock:^(QBResponse* response, QBCBlob* blob) { QBChatAttachment* attachment = [QBChatAttachment new]; attachment.type = @"video"; attachment.ID = blob.UID; attachment.url = [blob publicUrl]; message.attachments = @[attachment]; message.text = @"Attachment video"; [self saveData:videoData chatAttachment:attachment error:nil]; [self.attachmentsStorage setObject:videoData forKey:attachment.ID]; [self changeMessageAttachmentStatus:QMMessageAttachmentStatusLoaded forMessage:message]; [chatService sendMessage:message type:QMMessageTypeText toDialog:dialog saveToHistory:YES saveToStorage:YES completion:completion]; } statusBlock:^(QBRequest* request, QBRequestStatus* status) { if ([self.delegate respondsToSelector:@selector(chatAttachmentService:didChangeUploadingProgress:forMessage:)]) { [self.delegate chatAttachmentService:self didChangeUploadingProgress:status.percentOfCompletion forMessage:message]; } } errorBlock:^(QBResponse* response) { [self changeMessageAttachmentStatus:QMMessageAttachmentStatusNotLoaded forMessage:message]; if (completion) { completion(response.error.error); } }]; } 
+5
source share
1 answer

You can use the following method to send videos.

 - (void)sendAttachmentMessage:(QBChatMessage *)attachmentMessage toDialog:(QBChatDialog *)dialog withAttachment:(QBChatAttachment *)attachment completion:(nullable QBChatCompletionBlock)completion 

The full code will look like this

 - (void)didPickAttachmentVideo:(NSURL *)video { QBChatMessage *message = [QBChatMessage new]; message.senderID = self.senderID; message.dialogID = self.dialog.ID; message.dateSent = [NSDate date]; __weak typeof(self)weakSelf = self; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ __typeof(weakSelf)strongSelf = weakSelf; QBChatAttachment *attachment = [QBChatAttachment videoAttachmentWithFileURL:video]; // Sending attachment to the dialog. dispatch_async(dispatch_get_main_queue(), ^{ [self.chatDataSource addMessage:message]; [[ServicesManager instance].chatService sendAttachmentMessage:message toDialog:strongSelf.dialog withAttachment:attachment completion:^(NSError *error) { [strongSelf.attachmentCells removeObjectForKey:message.ID]; NSString * myurl = attachment.remoteURL.absoluteString; if (error != nil) { [strongSelf.chatDataSource deleteMessage:message]; //Show error alert } }]; }); }); } 
0
source

Source: https://habr.com/ru/post/1268044/


All Articles