与 UIActivityViewController 共享图像和文本到 Facebook Messenger 失败

use*_*509 5 optimization ios uiactivityviewcontroller facebook-messenger swift

\n

问题

\n\n

必须对下面的代码进行哪些更改才能确保 Messenger 能够很好地处理UIActivityViewController并共享图像和文本,或者至少共享图像?

\n
\n\n
\n\n

背景

\n\n

我用来UIActivityViewController分享我的应用程序中的文本和图像,并将它们发送到电子邮件、消息和其他共享应用程序。UIActivityViewController很棒,并且可以以简单且标准的方式与大多数应用程序\xe2\x80\xa6 配合使用,但是,我\xe2\x80\x99m 与 Messenger (Facebook Messenger) 存在问题,它不想\xe2\x80\x99 合作。

\n\n

在下面的代码中,我点击 aUIButton来拍摄屏幕的快照图像,将其转换为 .png,然后将准备好的图像 ( imageShare) 连同我准备的文本 ( textShare) 一起发送到UIActivityViewController. 这个简单的方法允许我的应用程序成功共享到电子邮件、消息和除 Messenger 之外的许多其他共享应用程序。

\n\n

(旁注,Facebook 只能分享准备好的图像 ( imageShare),但不能分享文本。)

\n\n
\n\n

问题

\n\n

UIActivityViewController这些是尝试与 Messenger共享时出现的问题:

\n\n
    \n
  • 分享时activityItems: [textShare, imageShare]

    \n\n
      \n
    • Messenger 仅发送共享文本。
    • \n
  • \n
  • 分享时activityItems: [textShare]

    \n\n
      \n
    • 共享到 Messenger 的选项甚至在UIActivityViewController.
    • \n
  • \n
  • 分享时activityItems: [imageShare]

    \n\n
      \n
    • 显示错误:\xe2\x80\x9c无法加载内容。加载您的内容时出现问题。请重试。\xe2\x80\x9d
    • \n
  • \n
\n\n
\n\n

代码

\n\n
@IBAction func myButton(sender: UIButton) {\n\n    // Take snapshot of screen\n    let imageSnapshot: UIImage!\n    UIGraphicsBeginImageContextWithOptions(self.view.frame.size, false, 0)\n    self.view.drawViewHierarchyInRect(CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height), afterScreenUpdates: false)\n    imageSnapshot = UIGraphicsGetImageFromCurrentImageContext()\n    UIGraphicsEndImageContext()\n\n    // Prepare text to share\n    let textShare: String!\n    textShare = "This is my original text."\n\n    // Prepare image to share\n    let imageShare: NSData\n    imageShare = UIImagePNGRepresentation(imageSnapshot)!\n\n    // Share text and image\n    let activity = UIActivityViewController(activityItems: [textShare, imageShare], applicationActivities: nil)\n    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {\n        self.presentViewController(activity, animated: true, completion: nil)\n    }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

图像

\n\n

iOS 提供UIActivityViewController可用的应用程序。

\n\n

UIActivityViewController 截图

\n

Ale*_*nov 0

尝试使用 UIImage 而不是 NSData。您可以将 UIImage 转换为 AnyObject 并添加到数组中。

另请看这个问题:Sharing image using UIActivityViewController