2012-11-28 16 views
5

Próbuję udostępnić obraz/wideo w module czatu. Odesłałem kod Sample, ale nie znalazłem żadnej pomocy.QuickBlox: Jak udostępnić obraz/wideo w module czat-peer-to-peer?

Alos Przekazałem http://quickblox.com/modules/chat/ mówi: Dodaj funkcje czatu na żywo do swojej aplikacji przez podłączenie naszego w pełni funkcjonalnego modułu czatu. Szybki, przyjazny dla zapory, solidny & Bezpieczny. Czy to oznacza, że ​​muszę kupić w pełni funkcjonalny moduł czatu?

Proszę zasugeruj mi właściwą drogę.

Dzięki

Odpowiedz

5

Tak, QuickBlox Chat pozwala na współdzielenie plików, wideo/audio pomiędzy 2 użytkowników.

W tej chwili SDK iOS nie zapewnia metod wysyłania pliku, czatu na żywo. Ta funkcja jest teraz w fazie testów beta. Rozwijamy łatwy interfejs dla użytkowników końcowych i potrzebujemy na to więcej czasu. Mam nadzieję, że skończymy to pod koniec grudnia.

Jednakże pozwalamy programistom samodzielnie rozwijać tę funkcję. Co jest potrzebne do tego?

  1. Wystarczy stworzyć prosty gniazda TCP/UDP między 2 użytkowników i wysyłać pliki audio/strumień wideo przez to
  2. Dla trzeba znać siebie adres IP portu & - istnieje protokół STUN, które pozwalają wiedzieć własny adres (IP portu &) - tutaj jest moje iOS wdrożenie protokołu STUN https://github.com/soulfly/STUN-iOS
  3. Jeśli już znasz adresu IP (Port &) - wystarczy wysłać go do swojego przeciwnika za pomocą prostych komunikatów Chat - zrób pozycja.

To wszystko, co trzeba

+0

Witam, znowu muszę użyć QuickBlox SDK :), więc chciałem wiedzieć, co jest najważniejsze, że quickblox obsługuje zdjęcia, udostępnianie wideo jak WhatsApp? – Maulik

+0

Witam Igor, używam quickblox ios sdk w bieżącym projekcie do czatowania. W tej aplikacji muszę udostępnić (wysłać) obraz/audio/wideo do innego użytkownika, gdy obaj użytkownicy czatują. Przeszedłem przez dokumentację quickblox, nie znalazłem żadnego solution.i używa quickblox ios SDK 2.0 w mojej aplikacji. Czy możesz mi powiedzieć Czy QuickBlox iOS SDK 2.0 pozwala na udostępnianie plików, wideo/audio między 2 użytkownikami? –

2

UPD:

QuickBlox wydała VideoChat i nieograniczony wywołań API dla programistów http://quickblox.com/blog/2013/02/quickblox-updates-videochat-and-unlimited-api-calls-for-developers

Tak więc, jeśli chcesz grać z kodem i integracji za pomocą aplikacji sprawdź przykładowy kod Simple dla iOS http://quickblox.com/developers/SimpleSample-videochat-ios

+0

jest dostępny dla Androida do .. –

+0

Android jest w trakcie testów, więc zostanie wydany w tygodniu –

+0

@IgorKhomenko Czy zostały dodane próbki do udostępniania zawartości między 2 użytkownikami lub czatem grupowym? – Xander

0

Jeśli Twoje wymaganie s tylko dla 1-1 czatu, następnie sprawdź ten link http://quickblox.com/developers/SimpleSample-chat_users-ios#Send_files To będzie działać na czacie 1-1.

Ale w przypadku pokoju nie mogę znaleźć żadnego rozwiązania od teraz. Próbuję to rozgryźć. Jeśli ktoś zna sposób, opublikuj tutaj.

+0

Czy nastąpił jakiś postęp w udostępnianiu treści na czacie? A może po prostu budujesz czat grupowy między użytkownikami? – Sauron

2

Masz uploadMethod takiego,

-(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]; 
} 

aw QBChatDelegate, trzeba tę metodę

- (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); 
    } 
} 

Tutaj są coraz przesłanego pliku ID, a ty odsyłasz to jako wiadomość..

W swojej 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]; 
    } 
} 

Ta metoda ponownie wzywa completedWithResult metodę dodaj ten kod tam ...

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); 
    } 

Jeśli chcesz wyświetlić obraz w Tableview, jak zmienić cellForRow to ..

- (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; 

    } 
} 

Próbowałem tego i tego kawałek kodu działa. Pozdrawiam.

+0

Attachement obrazu pojawia się tylko dla odbiorcy nie pojawia się dla nadawcy, powiedz mi proszę, czy mamy rozwiązanie thx – HDNZ

Powiązane problemy