Swift UIActivityViewController图像和Url共享不与FB一起工作

我正在使用UIActivityViewController共享图像。 Facebook最近的变化之后。 我可以分享一个图像和个人url,但我无法一次分享图像和url。 相同的代码适用于邮件,微博等,不知道我缺less的Facebook。

func shareImage() { var myWebsite = NSURL(string:"http://www.google.com/") var img: UIImage = currentPhoto! var shareItems:Array = [img, myWebsite] let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil) activityViewController.excludedActivityTypes = [UIActivityTypePrint, UIActivityTypePostToWeibo, UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList, UIActivityTypePostToVimeo] self.presentViewController(activityViewController, animated: true, completion: nil) } 

我修改了swift 2.0的代码:

 @IBAction func shareButtonPressed(sender: AnyObject) { let myWebsite = NSURL(string:"http://www.google.com/") let img: UIImage = image! guard let url = myWebsite else { print("nothing found") return } let shareItems:Array = [img, url] let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil) activityViewController.excludedActivityTypes = [UIActivityTypePrint, UIActivityTypePostToWeibo, UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList, UIActivityTypePostToVimeo] self.presentViewController(activityViewController, animated: true, completion: nil) } 

它是张贴一张图片与url。

结果与此代码:

在这里输入图像说明

这是我的解决scheme。 实现UIActivityItemSource协议。 支持文字,url和图片。

 func doShare() { let viewController = UIActivityViewController(activityItems: ["ScreenSort for iOS.", URL.init(string: "https://itunes.apple.com/app/id1170886809")!], applicationActivities: nil) viewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash self.present(viewController, animated: true, completion: nil) } extension YourViewController: UIActivityItemSource { func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any { return "" } func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType) -> Any? { return URL.init(string: "https://itunes.apple.com/app/id1170886809")! } func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivityType?) -> String { return "ScreenSort for iOS: https://itunes.apple.com/app/id1170886809" } func activityViewController(_ activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: UIActivityType?, suggestedSize size: CGSize) -> UIImage? { return nil } } 

分享图片和文字

  let imgShare : UIImage = UIImage(named: "store")! let textToShare = "Image form My app." let objectsToShare = [textToShare, imgShare] let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil) activityVC.popoverPresentationController?.sourceView = sender self.presentViewController(activityVC, animated: true, completion: nil) 

SWIFT 3

  let myWebsite = NSURL(string: visitedlink) let img: UIImage = UIImage(named:"Logo")! guard let url = myWebsite else { print("nothing found") return } let shareItems:Array = [img,url] let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil) activityViewController.excludedActivityTypes = [UIActivityType.print, UIActivityType.postToWeibo, UIActivityType.copyToPasteboard, UIActivityType.addToReadingList, UIActivityType.postToVimeo] self.present(activityViewController, animated: true, completion: nil)