我正在尝试在聊天模块中分享图片/视频。我已经为此提了Sample代码,但找不到任何帮助。
Alos我已经提到了http://quickblox.com/modules/chat/,它通过插入我们的全功能聊天模块为您的应用添加实时聊天功能。快速,防火墙友好,强大和安全安全。这是否意味着我必须购买功能齐全的聊天模块?
请以正确的方式建议我。
谢谢
答案 0 :(得分:5)
是的,QuickBlox Chat允许在2个用户之间共享文件,视频/音频。
目前iOS SDK不提供发送文件,实时聊天的方法。此功能目前正在进行Beta测试。我们正在为最终用户开发简单的界面,我们需要更多的时间。我希望,我们将在12月底完成它。
但是,我们允许开发人员自己开发此功能。 你需要什么?
这就是你所需要的一切
答案 1 :(得分:2)
UPD :
QuickBlox发布了针对开发人员的VideoChat和无限API调用http://quickblox.com/blog/2013/02/quickblox-updates-videochat-and-unlimited-api-calls-for-developers
因此,如果您想使用代码并将其与应用集成,请查看适用于iOS的简单代码示例http://quickblox.com/developers/SimpleSample-videochat-ios
答案 2 :(得分:2)
你有像这样的uploadMethod,
-(IBAction)uploadFile:(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];
}
在QBChatDelegate中,你有这个方法
- (void)completedWithResult:(Result*)result{
// Upload file 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];
}
else
{
NSLog(@"errors=%@", result.errors);
}
}
在这里,您将获得上传的文件ID,并将其作为消息发送..
在你的chatDidReceiveNotification
中- (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];
}
}
此方法再次调用completedWithResult
方法,在此处添加此代码...
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.messagesTableView reloadData];
}
}else{
NSLog(@"errors=%@", result.errors);
}
如果要在tableView中显示图像,请像这样更改cellForRow ..
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if([[self.messages objectAtIndex:indexPath.row]isKindOfClass:[QBChatMessage class]])
{
static NSString *ChatMessageCellIdentifier = @"ChatMessageCellIdentifier";
ChatMessageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ChatMessageCellIdentifier];
if(cell == nil){
cell = [[ChatMessageTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ChatMessageCellIdentifier];
}
QBChatMessage *message = (QBChatMessage *)self.messages[indexPath.row];
//
[cell configureCellWithMessage:message is1To1Chat:self.opponent != nil];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
else if ([[self.messages objectAtIndex:indexPath.row]isKindOfClass:[UIImageView class]])
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];
if (nil == cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"CellIdentifier"];
}
UIImageView *receivedImage = [self.messages objectAtIndex:indexPath.row];
[cell.contentView addSubview:receivedImage];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
}
我试过这个,这段代码可行。 欢呼声。
答案 3 :(得分:0)
如果您的要求仅适用于1-1聊天,请查看此链接 http://quickblox.com/developers/SimpleSample-chat_users-ios#Send_files 这将适用于1-1聊天。
但是,如果有空间,我现在无法找到任何解决方案。我想弄清楚。如果有人知道,请在这里发帖。