我試圖使用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) –