2015-10-29 1 views
2

Он успешно перенаправляется в приложение Whatsapp. Нет кадра предварительного просмотра, а при нажатии «Отправить» появляется сообщение об ошибке «Это видео невозможно отправить. Выберите другое видео.iOS Не удалось передать видео в Whatsapp с помощью UIDocumentInteractionController

Вот мой код.

- (void)shareVideo { 
NSLog(@"[WhatsAppShare] sharing video"); 
//NSString *nativePath = [[NSString alloc] initWithCString:path encoding:NSASCIIStringEncoding]; 
NSString *nativePath=[[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"]; 

// Save video to path in documents directory 
NSString *savePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/whatsAppTmp.wam"]; 

if([[NSFileManager defaultManager] fileExistsAtPath:savePath]){ 
    if([[NSFileManager defaultManager] removeItemAtPath:savePath error:nil]){ 
     [self shareVideoAtNativePath:nativePath SavePath:savePath]; 
    } 
} else { 
    [self shareVideoAtNativePath:nativePath SavePath:savePath]; 
}} 

- (void)shareVideoAtNativePath:(NSString*)nativePath SavePath:(NSString*)savePath{ 
NSError*error; 
BOOL isSuccess=[[NSFileManager defaultManager] copyItemAtPath:nativePath toPath:savePath error:&error]; 
if(isSuccess){ 
    // Create interaction controller 
    self.documentInteractionController   = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:savePath]]; 
    self.documentInteractionController.UTI  = @"net.whatsapp.movie"; 
    self.documentInteractionController.delegate = self; 

    [self.documentInteractionController presentOpenInMenuFromRect:CGRectMake(0, 0, 1, 1) 
                  inView:[self view] 
                 animated:YES]; 
} else{ 
    NSLog(@"error %@", error); 
} 
} 
+0

Хотя ответ Али правильно ('.wam' обмен нарушается в последней версии WhatsApp) вы можете поделиться видео как '.m4v', и он будет работать нормально. –

ответ

1

Мы наблюдали ту же самую проблему. Все не работали до недавнего обновления WhatsApp. Это, наверное, ошибка на WhatsApp стороны.

Вот обходной путь для этой проблемы:

  • Не используйте файл wam, используйте файл mp4 напрямую. Так что в вашем случае, просто позвоните

    [self shareVideoAtNativePath:nativePath SavePath:nativePath]; 
    
  • Измените ИМП общественного Mpeg4:

    self.documentInteractionController.UTI = @"public.mpeg-4"; 
    

Это, кажется, решили нашу проблему. Однако есть недостаток, что в диалоговом окне общего доступа теперь есть много других приложений/служб, которые могут открывать файлы mp4.

+0

Это не работает, если Whatsapp не установлен в телефоне? – hyd00

1

Мы столкнулись с одной и той же проблемой.

Официальный формат .wam отображает только WhatsApp в диалоговом окне общего доступа, но не пересылает видео.

Использование .m4v Формат работает для нас. Еще несколько параметров отображаются вместе с WhatsApp (Open in WhatsApp - это тот вариант, который нам нужен). Перед отправкой пользователя в диалоговое окно общего доступа отображается предупреждение «Пожалуйста, выберите Whatsapp на следующем экране».

Формат файла: m4v

ИМП: net.whatsapp.movie

Пожалуйста, обратитесь к рабочему коду ниже:

UIDocumentInteractionController *documentInteractionController; 
    ----- 
    ----- 
- (void)shareVideoViaWhatsApp:(NSURL*)url{  
     // Creating temp video to share specifically on whatsapp. 
     NSString *cachesFolder = [NSTemporaryDirectory() stringByAppendingPathComponent: [NSString stringWithFormat:@"video.m4v"]]; 
     NSURL *file = [NSURL fileURLWithPath:cachesFolder]; 
     [[NSData dataWithContentsOfURL:url] writeToURL:file options:NSDataWritingAtomic error:nil]; 

     documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL: file ]; 
     documentInteractionController.UTI = @"net.whatsapp.movie"; 

     documentInteractionController.delegate = self; 
     [documentInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]; 
}