通过 UIActivityViewController 共享的 Gif 在(至少)fb、twitter、notes 中以静态图像的形式出现

Posted

技术标签:

【中文标题】通过 UIActivityViewController 共享的 Gif 在(至少)fb、twitter、notes 中以静态图像的形式出现【英文标题】:Gif shared through UIActivityViewController comes out as static image in (at least) fb, twitter, notes 【发布时间】:2018-09-20 08:51:27 【问题描述】:

我正在尝试通过标准 ios 共享屏幕将我的 (unity) 应用程序中的 gif 共享到社交网络。

由于this question,我首先将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。 检查这个类似的问题有很好的答案***.com/questions/26623931/… 读取数据并尝试将此函数用作数据的扩展,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 结果是什么? 抱歉,我不确定“用作数据的扩展”是什么意思! 【参考方案1】:

作为this 的回答,您必须考虑社交网络的不同方式

TWITTER : 要在 twitter 上分享 GIF,必须使用 twitter API 并创建一个多部分请求来实现目标及其工作非常 好吧。

FACEBOOK:我确实使用 FACEBOOKSHAREKIT 在 Facebook 上分享了一些 GIF, 但我不知道为什么有时 Gif 是动画的,有时不是。

INSTAGRAM : 要在 Instagram 上分享 gif,必须将 GIFS 转换为 MP4(或 Instagram 接受的任何其他视频格式)然后将其保存到 相机胶卷然后分享它,它有点扭曲但它的工作非常 好吧。

WHATSAPP:它根本不支持 GIF。

要做到这一切,我不能使用 "UIActivityViewController" ,所以 决定创建一个自定义共享页面。如果有人知道 添加在这里,以帮助我和其他人请告诉我(尤其是关于 Facebook)。提前致谢

【讨论】:

我想我宁愿完全不支持 gif,也不愿集成和支持所有这些 SDK 和工作流。在 iOS 上来吧,这在 android 上效果很好......

以上是关于通过 UIActivityViewController 共享的 Gif 在(至少)fb、twitter、notes 中以静态图像的形式出现的主要内容,如果未能解决你的问题,请参考以下文章

绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合

如何通过 Windows Azure 通过 GCM 通过唯一 ID 发送特定 Android 设备的通知?

下拉框多选框单选框 通过TagHelper绑定数据

酶:测试孩子通过安装渲染失败,但通过浅时通过

java是通过值传递,也就是通过拷贝传递——通过方法操作不同类型的变量加深理解

通过代码进行 Spring 配置与通过注释进行配置