我可以从UIActivityViewController和原生的UIActivityTypePostToTwitter发送动画GIF吗?

时间:2014-06-23 00:43:00

标签: ios objective-c twitter animated-gif uiactivityviewcontroller

我有一个UIActivityViewController共享一个

的对象
  • 符合UIActivityItemSource协议和
  • 通过以适当的方式返回。{1}} .gif文件和NSURL来提供动画GIF文件。

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

我是否需要等待Apple在未来的iOS版本中更新CFBridgingRelease(kUTTypeGIF),或者我错过了您在某处看到的解决方法? (我意识到这个案例没有使用列表"Twitter.com, Android and iPhone [app]"中的任何内容。这可能是徒劳的请求。)

已完成作业:

  • 我知道the Twitter activity type can also work with an ALAsset object,人们通过将数据保存在ALAssets中来获取进出已保存照片的GIF动画,但我希望能够在不触及相机胶卷的情况下发送这些GIF,如果可能的话
  • 我查了NSHipster
  • 我尝试在Lyndsey关于Twitter API的提示上为我的本地.gif文件返回UIActivityTypePostToTwitter个对象而不是NSData。没有变化。
  • 我在Twitter API docs中看到NSURL之后尝试将kUTTypeData而不是kUTTypeGIF作为dataTypeIdentifierForActivityType返回:

      
        

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

      

    但我的推文中没有出现任何图片。

谢谢!

2 个答案:

答案 0 :(得分:0)

the Twitter API:

的“参数”下列出

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

答案 1 :(得分:0)

遇到类似的问题和谷歌搜索了很多,但仍然不是一个完美的解决方案,我出现的最好的是:

使用UIActivityItemProvider并扩展 - (id)item {}以获取不同的UIActivityType:

Twitter :默认的UIActivityViewController Twitter分享不支持它,它将缩小"缩小"它仍然是JPG。但不知何故,它适用于低于100kb的GIF(在iOS 9中测试过),我不知道为什么。因此,我必须按照here中的教导使用SLRequest上传GIF。完成SLRequest并返回后,关闭UIActivityViewController。其缺点是没有预览共享表,用户无法再输入自己的消息。

- (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新手,所以有些专家请尽可能纠正我和代码