我有一个任务是将Assets Library中的视频共享到Vimeo。我以这种方式实现activity控制器:
NSArray *activityItems = @[_videoAsset.defaultRepresentation.url];
UIActivityViewController *activity = [[UIActivityViewController alloc]
initWithActivityItems:activityItems
applicationActivities:nil];
activity.excludedActivityTypes = @[
UIActivityTypeAirDrop,
UIActivityTypeMessage,
UIActivityTypePostToFacebook,
];
[self presentViewController:activity animated:YES completion:nil];
苹果公司的文档说,我可以分享我的ALAsset或网址作为活动项目,但我只有控制器中的“保存视频”选项。那么我到底做错了什么呢?
发布于 2017-02-26 23:10:58
也有这个问题,最终在将ALAsset的数据保存为文件并共享后,成功地进行了共享。
代码如下所示:
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
[assetsLibrary assetForURL:videoUrl resultBlock: ^(ALAsset *asset){
ALAssetRepresentation *rep = [asset defaultRepresentation];
Byte *buffer = (Byte*)malloc(rep.size);
NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* videoPath = [documentsDirectory stringByAppendingPathComponent:@"VIDEO.MOV"];
NSError *error;
[[NSFileManager defaultManager] removeItemAtPath:videoPath error:&error];
BOOL success = [data 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];
}
} failureBlock:nil];
https://stackoverflow.com/questions/25002683
复制相似问题