我已经差不多2天寻找解决问题的方法,但我没有成功,我想在Facebook,Twitter,电子邮件上分享GIF(动画图像) ,WhatsApp,使用" UIActivityViewController" 。
这是我的代码:
NSURL *imagePath = [NSURL URLWithString:@"http://sth.gif"];
NSData *animatedGif = [NSData dataWithContentsOfURL:imagePath];
NSArray *sharingItems = [NSArray arrayWithObjects: animatedGif,stringToShare, nil];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
当我分享电子邮件时,它的动画和它的工作完美,但在Twitter,Facebook,whatsApp Gifs没有动画,它就像一个图像...... 我已经阅读了有关同一问题的所有Stack-overflow问题,例如this或this或this,但它不适用于我。
答案 0 :(得分:3)
到目前为止,根据天研究发现:
TWITTER :对于分享,Twitter上的GIF必须使用Twitter API并创建多部分请求以实现目标并且其工作得非常好。
FACEBOOK :我确实在Facebook上使用 FACEBOOKSHAREKIT 分享了一些GIF,但我不知道为什么Gif有时会动画,有时候不会。
INSTAGRAM :在Instagram上分享gif必须将GIFS转换为MP4(或Instagram接受的任何其他视频格式)然后保存到相机胶卷然后分享它,它有点扭曲但它的工作很好。
WHATSAPP :根本不支持GIF。 阅读更新
要完成所有这些,我无法使用“UIActivityViewController”,因此决定创建一个自定义共享页面。如果有人知道在这里添加的东西,帮助我和其他人请告诉我(特别是关于Facebook)。 提前致谢
<强>更新强>
WHATSAPP :感谢@AmmarShahid,正如他在评论中提到的,Whatsapp现在支持gif。
答案 1 :(得分:1)
遇到类似的问题和谷歌搜索了很多,但仍然不是一个完美的解决方案,我出现的最好的是:
使用UIActivityItemProvider并扩展 - (id)item {}以获取不同的UIActivityType:
Twitter :默认的UIActivityViewController Twitter共享尚不支持它,它将“缩小”它作为一个静止的JPG。但不知何故,它适用于GIF小于100kb(在iOS 9测试),我不知道为什么。因此,我必须按照here中的教导使用SLRequest上传GIF。完成SLRequest并返回后,关闭UIActivityViewController。其缺点是没有预览共享表,用户无法再输入自己的消息。
Facebook :实际上要容易得多!只需将GIF上传到Giphy,然后将Giphy URL提供给UIActivityViewController而不是文件内容,Facebook会识别它并显示动画GIF
- (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新手,所以有些专家请尽可能纠正我和代码
答案 2 :(得分:0)
//分享GIF文件:WhatsApp
NSURL *imageUrl =[self.ImageArray objectAtIndex:currentPhotoIndex];
NSString *path=imageUrl.absoluteString;
NSArray *strings = [path componentsSeparatedByString:@"/"];
NSString *mygif=[strings objectAtIndex:strings.count-1];
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *dataPath = [documentsPath stringByAppendingPathComponent:@"/MrHRamani"];
NSString *filePath = [dataPath stringByAppendingPathComponent:mygif];
NSURL *urll=[NSURL fileURLWithPath:filePath];
NSLog(@"imag %@",imageUrl);
self.documentationInteractionController.delegate = self;
self.documentationInteractionController.UTI = @"net.whatsapp.image";
self.documentationInteractionController = [self setupControllerWithURL:urll usingDelegate:self];
[self.documentationInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];