【问题标题】:iOS Share GIF (animated image) not WorkingiOS Share GIF(动画图像)不起作用
【发布时间】:2016-08-28 16:07:30
【问题描述】:

我正在寻找解决问题的方法已经快 2 天了,但我没有成功,我想在 Facebook、Twitter、电子邮件、WhatsApp 上分享 GIF(动画图像),使用 " 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 问题,例如 thisthisthis 但它对我不起作用。

【问题讨论】:

    标签: ios objective-c facebook twitter gif


    【解决方案1】:

    到目前为止,根据几天的研究发现:

    TWITTER :要在 twitter 上分享 GIF,必须使用 twitter API 并创建一个多部分请求来实现目标,并且效果很好。

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

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

    WHATSAPP:根本不支持 GIF。 阅读更新

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

    更新

    WHATSAPP:感谢@AmmarShahid,正如他在 cmets 中提到的,Whatsapp 现在支持 gif。

    【讨论】:

    • whatsapp 现在支持 gif。您只需传递 nsdata 格式的数据。
    • @ammarshahid 谢谢,我已经更新了我的答案......当我写下答案时,whatsapp 不支持 .gif
    【解决方案2】:

    遇到了类似的问题,google了很多,但仍然不是一个完美的解决方案,我想出的最好的在这里:

    使用 UIActivityItemProvider 并为不同的 UIActivityType 扩展 - (id)item {}:

    Twitter:默认的 UIActivityViewController Twitter 共享还不支持它,它将“缩小”它作为静止的 JPG。但是不知何故,它适用于小于 100kb 的 GIF(在 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新手,所以请一些专家纠正我和代码如果可能的话

    【讨论】:

    • 你的 facebook 解决方案很好,不幸的是到目前为止,这是在 facebook 上分享 gif 的唯一方法。
    【解决方案3】:

    // 分享 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];
    

    【讨论】:

      猜你喜欢
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2018-09-13
      • 2023-01-20
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      相关资源
      最近更新 更多