我有一个UIActivityViewController
共享一个
UIActivityItemSource
协议和NSURL
来提供动画GIF文件。如果我在新邮件中共享一个对象,我会看到GIF在模拟器中移动。如果我尝试发推文相同的内容,图片的一个框架会附加到推文上,但它会作为静止图像上传。
我是否需要等待Apple在未来的iOS版本中更新CFBridgingRelease(kUTTypeGIF)
,或者我错过了您在某处看到的解决方法? (我意识到这个案例没有使用列表"Twitter.com, Android and iPhone [app]"中的任何内容。这可能是徒劳的请求。)
已完成作业:
UIActivityTypePostToTwitter
个对象而不是NSData
。没有变化。我在Twitter API docs中看到NSURL
之后尝试将kUTTypeData
而不是kUTTypeGIF
作为dataTypeIdentifierForActivityType
返回:
传递的图像应该是图像或二进制base64编码的原始二进制文件,只要Content-Type设置得当,就不需要编码或转义内容(当有疑问时:“application / octet-stream” )。
但我的推文中没有出现任何图片。
谢谢!
答案 0 :(得分:0)
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新手,所以有些专家请尽可能纠正我和代码