2012-09-28 17 views
8

का उपयोग कर रहा iOS6 में साझा करने के लिए UIActivityViewController उपयोग करने के लिए पलायन कर रहा हूँ वस्तु संलग्न है, लेकिन मैं समझ नहीं ईमेल संलग्नक वस्तुओं जब ईमेल द्वारा साझा कर शामिल होने के लिए तैयार करने का तरीका।iOS6 UIActivityViewController

iOS5 में इसी कोड है:

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
[picker addAttachmentData:data mimeType:@"application/XXX" fileName:fileName]; 

उत्तर

24

आपके पास UIActivityViewController पर बहुत सीमित नियंत्रण है, लेकिन यदि आप अच्छी तरह से ज्ञात माइम प्रकारों को जोड़ रहे हैं, तो मैंने पाया कि आप फ़ाइल फ़ाइल में संबंधित फ़ाइल एक्सटेंशन प्रदान करके इसे सही तरीके से काम करने के लिए प्राप्त कर सकते हैं। सोच क्यों अपनी फ़ाइलें ड्रॉपबॉक्स और अन्य सामान्य फ़ाइल की तरह क्षुधा को UIActivityViewController का उपयोग कर साझा नहीं किया जा रहा है

NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
// The file extension is important so that some mime magic happens! 
NSString *filePath = [docsPath stringByAppendingPathComponent:@"vcard.vcf"]; 
NSURL *fileUrl  = [NSURL fileURLWithPath:filePath]; 

[data writeToURL:fileUrl atomically:YES]; // save the file 

// Now pass the file URL in the activity items array 
UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems: 
    @[@"Here's an attached vCard", fileUrl] applicationActivities:nil]; 
[vc presentModalViewController:avc animated:YES]; 
+0

यह वास्तव में काम करता है, धन्यवाद मार्किव :) मैंने इसे एक ऐप के लिए कस्टम फाइलें बनाने के लिए एक और गाइड के साथ संयुक्त किया (उदाहरण के लिए .myApp का उपयोग कर फाइलें), और उसे fileURL के साथ काम करने के लिए मिला। – Setomidor

+1

इस पुराने प्रश्न को लाने के लिए खेद है, लेकिन '[डेटा लिखना नहीं चाहिए: फ़ाइलपैथ परमाणु रूप से: हाँ] '' [डेटा लिखें ToURL: fileURL परमाणु रूप से: हाँ] '? –

+0

@ गैब्रिएल पेट्रोनेला हां या मेरा मानना ​​है [डेटा लिखना टोफाइल: फ़ाइलपैथ परमाणु रूप से: हाँ] भी काम करेगा। –

0

मैं बता सकता UIActivityViewController साथ ऐसा नहीं कर सकते क्या से - मैं भी बनाने के लिए प्रबंधन नहीं कर सकते यह संदेश के मुख्य भाग के लिए वर्तमान HTML सामग्री - तो आप SLComposeViewController का उपयोग बंद कर सकते हैं।

+0

यह ... के साथ स्ट्रिंग गतिविधि आइटम में आप पारित टैग करके html सामग्री जोड़ना संभव है - उसके बाद ही यह एचटीएमएल के रूप में व्याख्या की जाएगी। – SMSidat

+0

@ एसएमएसआईडीएटी क्या आप निश्चित हैं? यह वही है जो मैंने किया था और इसे शाब्दिक रूप से प्रस्तुत किया गया था (यानी HTML के रूप में व्याख्या नहीं किया गया) –

+0

मुझे पूरा यकीन है - मैंने इसे किया है और यह काम करता है। मैं वास्तव में इस क्यू एंड ए थ्रेड को हाइजैक नहीं करना चाहता हूं, इसलिए यदि आपके पास पहले से कोई है, तो मुझे आपकी मदद करने में खुशी होगी, या आप अपने कोड के प्रासंगिक भाग की एक प्रति के साथ एक नया बना सकते हैं I मैं देख सकता हूं कि मैं क्या कर सकता हूं – SMSidat

2

किसी के लिए: उदाहरण के लिए, यदि आपका लगाव किसी vCard है, फ़ाइल URL में ".vcf" एक्सटेंशन का उपयोग अनुप्रयोगों को संभालना, जो आप वास्तव में चाहते हैं वह एक UIDocumentInteractionController है।

इस तरह यह कुछ का उपयोग करें:

class ViewController { 
    var openInController:UIDocumentInteractionController! 

    init() { 
     openInController = UIDocumentInteractionController(URL: docURL) 
    } 

    func shareDoc { 
     openInController.presentOptionsMenuFromRect(CGRectZero, inView: self.view, animated: true) 
    } 
} 
संबंधित मुद्दे