使用UIActivityViewController共享视​​频时,不附加video邮件

我使用下面的代码来分享设备上的video,它很适合通过邮件,脸谱和iCloud共享,只能用于邮件,我可以看到邮件选项在那里,但在邮件草稿中,video不是连接。

在代码中, videoAssetPHAssettypes的PHAssetMediaTypeVideo

 [[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:nil resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) { AVURLAsset* urlAsset = (AVURLAsset*)asset; fileUrl = urlAsset.URL; NSLog(@"fileUrl is %@",fileUrl); NSArray *activityItems = [NSArray arrayWithObjects:fileUrl, nil]; UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; [self presentViewController:activityViewController animated:YES completion:nil]; }]; 

如果我使用UIImagePickerController附加video,它的工作原理,我search,但无法find答案,请帮助。

我最终将video文件保存到文档目录,并使用文档目录中的文件url,将video附加到通过邮件共享。

 [[PHImageManager defaultManager] requestImageDataForAsset:videoAsset options:nil resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) { NSLog(@"info is %@", info); NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString* videoPath = [documentsDirectory stringByAppendingPathComponent:@"IMG_2185.MOV"]; NSError *error; [[NSFileManager defaultManager] removeItemAtPath:videoPath error:&error]; BOOL success = [imageData writeToFile:videoPath atomically:YES]; if (success) { NSArray *activityItems = [NSArray arrayWithObjects:[NSURL fileURLWithPath:videoPath], nil]; UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; [self presentViewController:activityViewController animated:YES completion:nil]; } }]; 

我也使用requestExportSessionForVideo方法将video导出到文档目录,这也起作用。

 [[PHImageManager defaultManager] requestExportSessionForVideo:videoAsset options:nil exportPreset:AVAssetExportPresetPassthrough resultHandler:^(AVAssetExportSession *exportSession, NSDictionary *info) { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString* videoPath = [documentsDirectory stringByAppendingPathComponent:@"test3.MOV"]; NSFileManager *manager = [NSFileManager defaultManager]; NSError *error; if ([manager fileExistsAtPath:videoPath]) { BOOL success = [manager removeItemAtPath:videoPath error:&error]; if (success) { NSLog(@"I successfully removed it!"); } } NSURL *outputURL = [NSURL fileURLWithPath:videoPath]; NSLog(@"this is the final path %@",outputURL); exportSession.outputFileType=AVFileTypeQuickTimeMovie; exportSession.outputURL=outputURL; [exportSession exportAsynchronouslyWithCompletionHandler:^{ if (exportSession.status == AVAssetExportSessionStatusFailed) { NSLog(@"failed"); } else if(exportSession.status == AVAssetExportSessionStatusCompleted){ NSLog(@"completed!"); dispatch_async(dispatch_get_main_queue(), ^(void) { NSArray *activityItems = [NSArray arrayWithObjects:outputURL, nil]; UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; [self presentViewController:activityViewController animated:YES completion:nil]; //Main }); } }]; }];