【问题标题】:Swift UIActivityViewController Image&Url Share not working with FBSwift UIActivityViewController Image&Url Share 不适用于 FB
【发布时间】:2015-09-29 11:03:31
【问题描述】:

我正在使用 UIActivityViewController 来分享图像。 Facebook最近的变化之后。我可以单独分享图片和网址,但我无法同时分享图片和网址。相同的代码适用于 Mail、Twitter 等,但不确定 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)

}

【问题讨论】:

    标签: ios facebook swift uiactivityviewcontroller


    【解决方案1】:

    我已经为 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 的图片。

    此代码的结果:

    【讨论】:

    • 您的 Facebook 原生应用版本?
    • 我也有,它工作正常。尝试用另一台设备发帖。
    • 对不起哥们,我不知道为什么它不起作用。如果有人知道这个问题,请等待另一个答案。
    • 不,您不能这样做,因为预定义的文本将被忽略。
    • 正如我所说,你不能添加文本.. :)
    【解决方案2】:

    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)
    

    【讨论】:

    • 我试图在 Facebook 上发布图片,但没有发布。只能分享 URL。我们不能使用 UIActivityViewController 在 Facebook 上分享图像/视频吗?
    • 最近你不能用自己的SDK吗:(@AnandGautam
    • 正确@Safad Funy,但是我们可以使用SLComposeViewController在Facebook上分享图片,但需要使用FB SDK进行视频分享。
    【解决方案3】:

    这是我的解决方案。实现UIActivityItemSource 协议。支持文字、网址和图片。

    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
        }
    }
    

    【讨论】:

      【解决方案4】:

      分享图片和文字

              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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-07
        • 1970-01-01
        • 1970-01-01
        • 2015-09-21
        相关资源
        最近更新 更多