我试图使用UIActivityViewController
将一些图像和视频分享给其他应用程序(如FB,WhatsApp)。我有UIActivityItemProvider
的子分类,并且在调用-(id)item
方法时,我正在处理图像/视频并保存在文档目录中。然后我将文件路径返回为NSURLs
。我的问题是,我无法找到同时发送多个文件URL的方法。通过UIActivityViewController在其他应用程序中共享图像/视频在iOS中显示两次共享项目
下面是我从 - (id)item方法返回url的方法;
- 作为
NSArray
的NSURL
对象。不工作。当目标应用弹出来时,它总是空的。 - 作为
NSDictionary
,其中NSURL
对象是值和键可以是任何东西。 PROBLEMATIC:目标应用程序弹出窗口显示所有项目,但TWICE!我尝试了很多字典,但是找不到解决这个问题的方法。
简单地返回NSURL
对象-(id)item
方法适用于单个文件。但是,我必须分享多个项目。数组不起作用,Dictionary正在复制共享项目。
有人可以告诉我我在做什么错吗?
更新1:
这是我如何展示UIActivityViewController。
CustomItemProvider *provider = [[CustomItemProvider alloc] initWithPlaceholderItem:[UIImage imageNamed:@"ios-59.png"]];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[provider] applicationActivities:nil];
activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError)
{
if(completed)
{
NSLog(@"Activity Completed");
}
else
{
NSLog(@"Activity Cancelled");
}
};
[self presentViewController:activityViewController animated:YES completion:^{}];
UIActivityItemProvider实现如下:这些网址是有效的,并且在这些位置有图片/视频。
@interface CustomItemProvider : UIActivityItemProvider
@end
@implementation CustomItemProvider
- (id)item
{
NSURL *url1 = [NSURL fileURLWithPath:@"file one url"];
NSURL *url2 = [NSURL fileURLWithPath:@"file two url"];
NSURL *url3 = [NSURL fileURLWithPath:@"file three url"];
return @{@"item1":url1, @"item2":url2, @"item3":url3}; //As NSDictionary. This causes 6 items to be shared; all files twice.
//return @[url1, url2, url3]; //As NSArray
}
@end
更新2:
的链接的问题是不同的。 我不想直接发送文件到UIActivityViewController作为参数initWithActivityItems:
。原因是可能有多个视频文件,这会导致内存警告和崩溃。另外,在将文件发送给目标应用程序之前(在-(id)item
方法中,我没有在这里显示),我将操纵这些文件,因此我需要UIActivityItemProvider
来处理背景中的文件。
很难没有看到你实际上在做什么猜测。失败的代码是什么样的? –
@PhillipMills,我编辑了问题并添加了方法。 – Suran
可能的重复[如何通过UIDocumentInteractionController共享多个文件?](http://stackoverflow.com/questions/27655722/how-to-share-multiple-file-via-uidocumentinteractioncontroller) –