通过UIActivityViewController分享的Gif在(至少)fb、twitter、notes中呈现为静态图像

6
我将尝试通过标准的iOS分享屏幕,将我的(unity)应用程序中的gif分享到社交网络。由于这个问题,我首先将gif路径包装在NSURL中,然后将其发送到UIActivityViewController:
NSURL *nsGifURL = [NSURL fileURLWithPath:nsGifPath];
NSArray *itemsToShare = @[nsMessage, nsGifURL];

// find the unity window:
UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIActivityViewController *share = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
[window.rootViewController presentViewController:share animated:YES completion:nil];

这段代码可以编译并运行,但是当我到达另一个应用程序时,图像是静态的而不是gif格式的。如何让类似fb的应用程序接受和显示gif格式的图像?编辑:nsGifPath绝对有.gif扩展名。

我也尝试将gif的NSData传递到相同的静态图像结果。NSExtensionItem会输出有关该对象的一些信息,并正确地将其标识为com.compuserve.gif。 - tenpn
请查看这个类似的问题,其中有很好的答案:https://stackoverflow.com/questions/26623931/how-to-share-an-gif-animated-images-in-ios - Ravi Panchal
读取数据并尝试将此函数用作数据的扩展,var format: String { let array = [UInt8](self) let ext: String switch array[0] { case 0xFF: ext = "jpg" case 0x89: ext = "png" case 0x47: ext = "gif" case 0x4d: ext = "tiff" default: ext = "unknown" } return ext }你得到了什么结果? - Marcel T
抱歉,我不确定“用作数据扩展”的意思! - tenpn
1个回答

1
作为this的答案,您需要考虑社交网络的不同方式。
TWITTER:要在Twitter上分享GIF,必须使用Twitter API并创建多部分请求以实现目标,这非常有效。
FACEBOOK:我使用FACEBOOKSHAREKIT在Facebook上分享了一些GIF,但我不知道为什么有时候GIF是动画的,有时候不是。
INSTAGRAM:要在Instagram上分享gif,必须将GIF转换为MP4(或Instagram接受的任何其他视频格式),然后保存到相机胶卷中,然后分享。这有点复杂,但非常有效。
WHATSAPP:它根本不支持GIF。
为了做到这一点,我无法使用“UIActivityViewController”,因此决定创建一个自定义共享页面。如果有人知道要添加的内容,请告诉我(尤其是关于Facebook)。提前致谢。

我认为与其集成和支持所有这些SDK和工作流程,不如干脆不支持gif。iOS啊,安卓上这个功能可好了... - tenpn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接