2015-09-29 2 views
8

Я использую UIActivityViewController для совместного использования изображения. После недавних изменений в Facebook. Я могу совместно использовать образ и Url individualy, но я не могу одновременно делиться имиджем и URL-адресом. Тот же код отлично работает с Mail, Twitter и т. Д., Не уверен, что мне не хватает для Facebook.Swift UIActivityViewController Image & Url Share не работает с FB

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) 

} 
+0

https://iosdevcenters.blogspot.com/2017/08/how-to-share-content -with.html –

ответ

10

Я изменил код для быстрой версии 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.

Результат с этим кодом:

enter image description here

+0

ваш родной вариант приложения для Facebook? –

+0

все еще его не работает для меня –

+0

ваше приложение facebook обновляется с последней версией? –

2

Вот мое решение. Внедрите протокол 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 
    } 
} 
1

Чтобы разделить изображение и текст

 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) 
3

СВИФТ 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) 
Смежные вопросы