如何在 IOS 的 Twitter 中上传动画 GIF?

How to Upload an Animated GIF in Twitter for IOS?

我有一张 GIF 图片,想在 Twitter 上分享它,但不幸的是它不起作用。

当我在 dev.twitter.com 网站上使用推特 api post编辑图像时,它工作正常并且动画。

但是我想 post 使用 Twitter IOS App/API 的图像。有人知道怎么做吗?

提前致谢。

- (void)postImage:(UIImage *)image withStatus:(NSString *)status url:(NSURL*)urlData {

   // UIImage *img = [UIImage animatedImageNamed:@"test.gif" duration:3.0];
    NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/update_with_media.json"];
    NSMutableDictionary *paramater = [[NSMutableDictionary alloc] init];

    //set the parameter here. to see others acceptable parameters find it at twitter API here : http://bit.ly/Occe6R
    [paramater setObject:status forKey:@"status"];

    ACAccountStore *accountStore = [[ACAccountStore alloc] init];
    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

    [accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) {
        if (granted == YES) {

            NSArray *accountsArray = [accountStore accountsWithAccountType:accountType];

            if ([accountsArray count] > 0) {
                ACAccount *twitterAccount = [accountsArray lastObject];

                SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:url parameters:paramater];

                NSData *imageData = [NSData dataWithContentsOfURL:urlData]; // GIF89a file

                [postRequest addMultipartData:imageData withName:@"media[]" type:@"image/gif" filename:@"animated.gif"];

                [postRequest setAccount:twitterAccount]; // or  postRequest.account = twitterAccount;

                [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                    NSString *output = [NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]];
                    NSLog(@"output = %@",output);
                    dispatch_async(dispatch_get_main_queue(), ^{

                    });

                }];
            }

        }
    }];
}

像这样调用上面的方法

[self postImage:nil withStatus:@"Your Text" url:assetURL]

实际上 update_with_media 已弃用。

从现在开始,您只需使用 upload.json + update.json。这是一个 2 层过程。

我写了一篇教程,介绍如何使用完整代码来完成此操作。看这里: http://xcodenoobies.blogspot.my/2016/01/how-to-using-slrequest-to-upload-image.html