में साझा वस्तुओं को दो बार दिखाता है। मैं UIActivityViewController
का उपयोग करके अन्य ऐप्स (जैसे एफबी, व्हाट्सएप) पर कुछ छवियों और वीडियो साझा करने की कोशिश कर रहा हूं। मेरे पास उप-वर्गीकृत UIActivityItemProvider
है, और -(id)item
विधियों को कॉल करने पर, मैं छवियों/वीडियो को संसाधित कर रहा हूं और दस्तावेज़ निर्देशिका में सहेज रहा हूं। फिर मैं फ़ाइल पथ को NSURLs
के रूप में वापस कर रहा हूं। मेरी समस्या यह है कि मैं एक ही समय में एकाधिक फ़ाइल यूआरएल भेजने का कोई तरीका नहीं ढूंढ पा रहा हूं।UIActivityViewController के माध्यम से अन्य ऐप्स में छवियों/वीडियो साझा करना आईओएस
नीचे दिए गए दृष्टिकोण हैं - मैंने (आईडी) आइटम विधि से यूआरएल वापस करने के लिए किए गए दृष्टिकोण;
NSURL
वस्तुओं केNSArray
के रूप में। काम नहीं करता। जब लक्ष्य ऐप पॉपअप आता है, तो यह हमेशा खाली होता है।NSDictionary
के रूप में, जिसमेंNSURL
ऑब्जेक्ट्स मान हैं और चाबियाँ कुछ भी हो सकती हैं। समस्या: लक्ष्य ऐप पॉपअप सभी आइटम दिखाता है, लेकिन TWICE! मैंने शब्दकोश के साथ बहुत प्रयोग किया, लेकिन इसे हल करने का कोई तरीका नहीं मिला।
से NSURL
ऑब्जेक्ट को केवल एक फ़ाइल के लिए ठीक काम करता है। लेकिन, मुझे कई आइटम साझा करना है। ऐरे काम नहीं करता है, शब्दकोश साझा वस्तुओं को डुप्लिकेट कर रहा है।
कोई मुझे बता सकते हैं मैं गलत यहाँ क्या कर रहा हूँ?
अद्यतन 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
जरूरत पृष्ठभूमि में फ़ाइलों को प्रोसेस करने।
यह आप वास्तव में क्या कर रहे हैं देखे बिना अनुमान लगाना मुश्किल है। असफल कोड कैसा दिखता है? –
@ फिलिप मिल्स, मैंने प्रश्न संपादित किया है और विधि को जोड़ा है। – Suran
संभावित डुप्लिकेट [UIDocumentInteractionController के माध्यम से एकाधिक फ़ाइल कैसे साझा करें?] (Http://stackoverflow.com/questions/27655722/how-to-share-multiple-file-via-uidocumentinteractioncontroller) –