我可以从UIActivityViewController和原生UIActivityTypePostToTwitter微博animationGIF吗?

我有一个UIActivityViewController共享一个对象

  • 符合UIActivityItemSource协议和
  • 通过在适当的方法中返回一个.gif文件的NSURLCFBridgingRelease(kUTTypeGIF)来提供一个animationGIF文件。

如果我在新邮件消息中共享我的一个对象,我会看到模拟器中移动的GIF。 如果我尝试发送同样的内容,图片框会附加到推文上,但会上传为静态图片。

我是否需要等待Apple在未来的iOS版本中更新UIActivityTypePostToTwitter ,或者是否错过了某处所见过的解决方法? (我知道这个案子并没有使用“Twitter.com,Android和iPhone [app]”列表中的任何内容),这可能是徒劳的请求。

家庭作业已经完成:

  • 我知道Twitter活动types也可以与ALAsset对象一起工作 ,并且人们通过将数据保存在ALAssets中而使GIF进出保存的照片,但是我希望能够在不触摸相机胶卷的情况下推送这些GIF , 如果可能的话。
  • 我检查了NSHipster 。
  • 我试图返回一个NSData对象而不是NSURL我的本地.gif文件在Lyndsey关于Twitter API的一个提示。 不用找了。
  • 在Twitter API文档中看到以下内容后,我试图返回kUTTypeData而不是kUTTypeGIF作为dataTypeIdentifierForActivityType

    传递的图像应该是图像或二进制base64编码的原始二进制文件,只要内容types设置正确(如果有疑问:“application / octet-stream”),就不需要编码或转义内容。

    但是我的推特没有出现任何形象。

谢谢!

正如在Twitter API的 “参数”下列出的那样:

image:configuration文件的背景图像,base64编码。 必须是小于800千字节的有效GIF,JPG或PNG图像。 宽度大于2048像素的图像将被强制缩小。 图像必须以原始的多部分数据提供,而不是URL。

遇到类似的问题,谷歌search了很多,但仍然不是一个完美的解决scheme,最好的我来到这里:

使用UIActivityItemProvider并为不同的UIActivityType扩展 – (id)item {}:

Twitter :默认的UIActivityViewController Twitter共享不支持它,它将“缩小”它仍然是一个JPG。 但不知何故,它适用于GIF小于100kb(在iOS 9中testing),我不知道为什么。 因此,我必须使用SLRequest来上传GIF,如上所述。 当SLRequest完成并返回时,closuresUIActivityViewController。 缺点是没有预览份额表,用户不能再input自己的信息。

 - (id)item { if ([self.activityType isEqualToString:UIActivityTypePostToFacebook]) { // Upload to Giphy ... return [NSURL URLWithString:giphyURL]; } if ([self.activityType isEqualToString:UIActivityTypePostToTwitter]) { // Use SLRequest to share instead ... // Dismiss the UIActivityViewController (I am using Unity) [UnityGetGLViewController() dismissViewControllerAnimated:NO completion: NULL]; return nil; } } 

完整的代码是在我的GitHub中 ,我实际上是一个iOS新手,所以一些专家请纠正我和代码,如果可能的话