Опубликовать изображение через FHSTwitterEngine

Я использовал FHSTwitter Engine для аутентификации oauth, а также для публикации изображения и текста в твиттере.

Когда я пытался отправить сообщение в одиночку. Это успешно опубликовано, но когда я отправляю его с изображением

[[FHSTwitterEngine sharedEngine]postTweet:@"test with image" withImageData:imageData];

выдает ошибку 204 и сообщение: Twitter успешно обработал запрос, но не вернул никакого контента

Если у кого-то есть идея выложить изображение с текстом или ссылкой.

2 ответа

Вы просто должны сжать изображение, ничего больше. Может быть, твиттер API не позволяет нам публиковать изображения большого размера.

NSData *data = UIImageJPEGRepresentation(imageView.image, 0.6);

Теперь передайте данные в ваш метод. Вы можете сжать изображение согласно вашему удобству.

NSURL *url = [NSURL URLWithString:imgURl];

    NSString *strForPost=[NSString stringWithFormat:@"%@ %@",self.dynamicTextToPost.text,url];
    int twitCount=[strForPost length];
    int runLoop=twitCount/140;
    int remender=twitCount%140;
    if (runLoop==0) {
        runLoop=runLoop+1;
    }
    if(remender!=0){
        runLoop=+1;
    }
       dispatch_async(GCDBackgroundThread, ^{
        @autoreleasepool {
//            NSData *data = [[NSData alloc] initWithContentsOfURL:url];
            [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
            NSString *title = nil;
            NSString *message = nil;
            NSString *subStr;
            NSString *strRemain=strForPost;
            for (int i=0; i<=runLoop; i++) {
                int j=i*140;

                NSLog(@"strRemain.length==>%d",strRemain.length);
                if (strRemain.length<140) {
                    subStr=[strRemain substringFromIndex:0];
//                    subStr=[strForPost substringWithRange:NSMakeRange(j, strRemain.length)];
                }else if(strRemain.length>140){
                    subStr=[strForPost substringWithRange:NSMakeRange(j, 140)];

                    NSLog(@"%d",j);
                    NSLog(@"%d",strForPost.length);
                    NSLog(@"%d",strRemain.length);
                    NSLog(@"%d",strForPost.length-j);
                    NSLog(@"%d",strRemain.length-j);

                   strRemain=[strForPost substringWithRange:NSMakeRange(140, strRemain.length-140)];
                }
                NSString *strShare=[self htmlEntityDecode:subStr];
                NSError *returnCode = [[FHSTwitterEngine sharedEngine]postTweet:strShare];
                [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

                if (returnCode) {
                    title = [NSString stringWithFormat:@"Error %d",returnCode.code];
                    message = returnCode.domain;
                } else {
                    title = @"Message";
                    message = @"Successfully Shared";
                }
            }
            dispatch_sync(GCDMainThread, ^{
                @autoreleasepool {
                    if ([message isEqualToString:@"Successfully Shared"]) {

                    }else  if ([message isEqualToString:@"Twitter successfully processed the request, but did not return any content"]) {

                    }
                    else{
                        // unable to share
                    }
                }
            });
        }
    });
Другие вопросы по тегам