2015-01-13 7 views
7

मैं एक ऐप का हिस्सा विकसित कर रहा हूं ताकि जब आप शेयर बटन टैप करते हैं, तो यह आपको तुरंत संदेश के साथ अपने हाईस्कॉर का स्क्रीनशॉट साझा करने की अनुमति देता है। मैं स्क्रीनशॉट का उत्पादन/साझा करने में सक्षम नहीं हूं, और जब मैं शेयर बटन टैप करता हूं, तो ऐप केवल मुझे अपना डिफ़ॉल्ट टेक्स्ट कॉपी करने या "मेल" को मेरे डिफ़ॉल्ट टेक्स्ट की प्रतिलिपि बनाने की अनुमति देता है, मुझे फेसबुक, ट्विटर, संदेश पर पोस्ट करने की इजाजत नहीं देता , और अधिक।गतिविधि दृश्य नियंत्रक में एक स्क्रीनशॉट साझा करना - स्विफ्ट

func shareButtonPress() { 

    var postPhrase = "Just hit \(highscore)! Beat it! #SwypIt" 

    //Generate the screenshot 
    UIGraphicsBeginImageContext(view.frame.size) 
    view.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    var image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    var postImage = UIImage(named: "\(image)") 

    var activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [postPhrase, postImage!], applicationActivities: nil) 

    self.presentViewController(activityViewController, animated: true, completion: nil) 

} 

इस बारे में जाने का सबसे अच्छा तरीका क्या है? धन्यवाद!

उत्तर

10

यह वह जगह है मैं कैसे मेरे एप्लिकेशन में साझा करने संभाल।

func socialShare(#sharingText: String?, sharingImage: UIImage?, sharingURL: NSURL?) { 
    var sharingItems = [AnyObject]() 

    if let text = sharingText { 
     sharingItems.append(text) 
    } 
    if let image = sharingImage { 
     sharingItems.append(image) 
    } 
    if let url = sharingURL { 
     sharingItems.append(url) 
    } 

    let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil) 
    activityViewController.excludedActivityTypes = [UIActivityTypeCopyToPasteboard,UIActivityTypeAirDrop,UIActivityTypeAddToReadingList,UIActivityTypeAssignToContact,UIActivityTypePostToTencentWeibo,UIActivityTypePostToVimeo,UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,UIActivityTypePostToWeibo] 
    self.presentViewController(activityViewController, animated: true, completion: nil) 
} 

मैंने .excludedActvityTypes का उपयोग करके कई साझाकरण विकल्पों को बाहर रखा है।

तो जब भी आप शेयर बटन हिट यह इस

socialShare(sharingText: "Just hit \(highscore)! Beat it! #SwypI", sharingImage: UIImage(named: "The screenshot you are saving"), sharingURL: NSURL(string: "http://itunes.apple.com/app/")) 

कारण आप साझा करने के विकल्प के रूप में ट्विटर और फेसबुक नहीं देख रहे हैं क्योंकि आप IPhone पर सेटिंग्स के भीतर उन्हें में साइन इन करना होगा है फोन है। व्यक्तिगत ऐप्स नहीं।

उम्मीद है कि इससे मदद मिलती है।

+0

आपको बहुत बहुत धन्यवाद! मुझे जिस चीज की जरूरत थी! – tdh

+0

मेरे उत्तर को सही के रूप में चिह्नित करें, इसलिए इसका उत्तर दिया गया है और कृपया उत्तर दें। – PoisonedApps

+0

मैं स्क्रीनशॉट को छवि के रूप में कार्यान्वित करने के बारे में कैसे जाउंगा? मैंने आपकी विधि का उपयोग किया, और जब तक मैंने स्क्रीन शॉट कोड को लागू करने का प्रयास नहीं किया, तब तक यह काम करता था। स्क्रीनशॉट खाली हो जाएगा, और संदेश अभी भी एक विकल्प नहीं होगा। धन्यवाद! ; मैं आपके उत्तर की सराहना करता हूं, लेकिन मुझे डर है कि मेरे पास इसे ऊपर उठाने के लिए पर्याप्त प्रतिष्ठा नहीं है। मैं इसे सही चिह्नित करूंगा, और मैं इसे अपवर्तित करने के लिए प्रतिष्ठा का निर्माण करना सुनिश्चित कर दूंगा। – tdh

0

एक SLComposeViewController का उपयोग करें।

import Social 

func shareButtonPress() { 

    var postPhrase = "New high score \(highscore)!" 

    //Generate the screenshot 
    UIGraphicsBeginImageContext(view.frame.size) 
    view.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    var image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    var postImage = UIImage(named: "\(image)") 

    let shareToFacebook = SLComposeViewController(forServiceType: SLServiceTypeFacebook) 
    shareToFacebook.setInitialText(postPhrase) 
    shareToFacebook.addImage(postImage) 
    presentViewController(shareToFacebook, animated: true, completion: nil) 
} 

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/SLComposeViewController_Class/

+0

'ViewController.swift: 207: 36: वैकल्पिक प्रकार 'CGContext' का मूल्य? अनचाहे नहीं; क्या आप '!' का उपयोग करना चाहते थे या '?'? 'लेकिन लाइन पर त्रुटि बनाएं' view.layer.renderInContext (UIGraphicsGetCurrentContext()) ' – Gank

संबंधित मुद्दे