2012-11-28 56 views
5

我想在聊天模塊中分享圖片/視頻。我已經提到了Sample的代碼,但找不到任何幫助。QuickBlox:如何在對等聊天模塊中共享圖像/視頻?

阿洛斯我已經提到http://quickblox.com/modules/chat/它說,通過到您的應用程序添加實時聊天功能,我們的全功能的聊天模塊堵漏。快速,防火牆友好,可靠&安全。這是否意味着我必須購買全功能聊天模塊?

請給我正確的方法。

感謝

回答

5

是,QuickBlox聊天功能可讓共享用戶之間的文件,視頻/音頻。

現在iOS SDK不提供發送文件,實時聊天的方法。此功能目前正在進行Beta版測試。我們正在爲終端用戶開發簡單的界面,我們需要更多的時間來完成這個任務。我希望我們會在十二月底完成。

但是,我們允許開發者自己開發這個功能。 你需要什麼?

  1. 只需創建簡單的TCP/UDP套接字2個用戶之間,並通過它
  2. 對於你需要知道對方的IP地址&端口發送文件,音頻/視頻流 - 有STUN協議,該協議允許要知道自己的地址(IP &端口) - 這裏是我的iOS實現STUN協議https://github.com/soulfly/STUN-iOS
  3. 的。如果你已經知道你的地址(IP &端口) - 只需將它發送給你的對手通過簡單的聊天信息 - 然後做項目。

這就是所有你所需要的

+0

嗨,我再次需要使用QuickBlox SDK :),所以我想知道quickblox支持照片,視頻共享像Whatsapp的主要事情? – Maulik

+0

嗨Igor,我在當前項目中使用quickblox ios sdk聊天。在那個應用程序中,我需要共享(發送)圖像/音頻/視頻給另一個用戶,同時兩個用戶在聊天。我經歷了quickblox文檔,我沒有找到任何solution.i'm在我的應用程序中使用了quickblox ios SDK 2.0。所以,你能告訴我QuickBlox iOS SDK 2.0允許在2個用戶之間共享文件,視頻/音頻嗎? –

2

UPD

QuickBlox發佈視頻聊天和無限的API調用的開發人員http://quickblox.com/blog/2013/02/quickblox-updates-videochat-and-unlimited-api-calls-for-developers

所以,如果你想用代碼來發揮和整合它與您的應用程序,檢查iOS的簡單代碼示例http://quickblox.com/developers/SimpleSample-videochat-ios

+0

可用於Android .. .. –

+0

Android正在測試,所以,將在一週內發佈 –

+0

@IgorKhomenko是否有任何樣本添加到2個用戶之間共享內容或羣聊? – Xander

0

如果您的要求我s僅適用於1-1聊天,請檢查此鏈接 http://quickblox.com/developers/SimpleSample-chat_users-ios#Send_files 這適用於1-1聊天。

但是,如果是房間,我目前無法找到任何解決方案。我試圖弄清楚。如果有人知道某種方式,請在這裏發帖。

+0

在聊天室內共享內容方面有任何進展嗎?或者也許只是建立用戶之間的羣組聊天? – Sauron

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; 

    } 
} 

我試過這個,這個一段代碼的作品。 乾杯。

+0

圖像附件它只顯示收件人它沒有出現的發件人也請告訴我,如果我們有一個解決方案thx – HDNZ