TWRequest устарел в iOS 6.0 — что я могу использовать вместо него?

Я разрабатываю представление Twitter Feed для приложения iOS. Я нашел TWRequest, и он работает именно так, как я искал. Но: я получаю уведомление: «TWRequest устарел: впервые устарел в iOS 6.0». Что я должен использовать вместо этого?


person Tobias Bambullis    schedule 11.11.2012    source источник


Ответы (4)


В iOS 6 вы должны использовать расширение Social.framework. У него есть класс с именем SLRequest.

Вы используете его почти так же, как устаревший TWRequest, но вам нужно указать, что это запрос в Twitter, а не в Facebook.

Весь Twitter.framework устарел с iOS 6, так как Apple добавила Facebook и Weibo (китайская социальная сеть) в iOS 6, они сгруппировали все социальные классы в новый Social.framework.

Обратите внимание, что вы должны указать тип сервиса для Twitter/Facebook. Пример:

SLRequest *aRequest  = [SLRequest requestForServiceType:SLServiceTypeTwitter
                                          requestMethod:SLRequestMethodPOST
                                                    URL:myurl
                                             parameters:myparams];

Обязательно ознакомьтесь с документацией.

person Daniel    schedule 11.11.2012

Вот полный код для загрузки текста и изображения в вашу учетную запись Twitter с помощью Twitter API

    UIImage *img = [UIImage imageNamed:@"twitterImage.png"];
    ACAccountStore *account = [[ACAccountStore alloc] init];
    ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
    [account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
        if (granted == YES) {
            // Populate array with all available Twitter accounts
            NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];
            if ([arrayOfAccounts count] > 0) {
                ACAccount *acct = [arrayOfAccounts objectAtIndex:0];
                NSDictionary *message = @{@"status": @"From my app"};
                NSURL *requestURL = [NSURL URLWithString:@"https://upload.twitter.com/1/statuses/update_with_media.json"];
                SLRequest *postRequest = [SLRequest
                                                  requestForServiceType:SLServiceTypeTwitter
                                                  requestMethod:SLRequestMethodPOST
                                                  URL:requestURL parameters:message];
                NSData *data = UIImagePNGRepresentation(img);
                [postRequest addMultipartData:data withName:@"media" type:@"image/png" filename:@"TestImage"];
                postRequest.account = acct;

                [postRequest performRequestWithHandler:
                     ^(NSData *responseData, NSHTTPURLResponse
                       *urlResponse, NSError *error)
                     {
                         if (error) {
                             NSLog(@"%@",error.description);
                         }
                         else {
                             NSLog(@"Upload Sucess !");
                         }
                     }];
            }
        }
    }];
person Hardik Thakkar    schedule 12.01.2015
comment
2015 г.: используйте api.twitter.com/1.1/statuses/update.json. а также обратите внимание, что ошибки, вполне возможно, могут вернуться как JSON в responseData. - person prewett; 28.07.2015

Если вы планируете интегрировать TwitterKit с Twitter для отправки твитов через ваше собственное приложение Twitter, это может вам помочь.

https://stackoverflow.com/a/28602749/1740354

person Vijay Tholpadi    schedule 19.02.2015

Другой альтернативой является использование Twitter API. Для этого у вас должна быть платформа Twitter.

Затем выполните следующий код:

NSString *statusesShowEndpoint = @"https://api.twitter.com/1.1/statuses/update.json";
NSDictionary *params = @{@"status": @"Hello, my first autopost tweet..."};

    NSError *clientError;
    NSURLRequest *request = [[[Twitter sharedInstance] APIClient]
                             URLRequestWithMethod:@"POST"
                             URL:statusesShowEndpoint
                             parameters:params
                             error:&clientError];

    if (request) {
        [[[Twitter sharedInstance] APIClient]
         sendTwitterRequest:request
         completion:^(NSURLResponse *response,
                      NSData  *data,
                      NSError *connectionError) {
             if (data) {
                 // handle the response data e.g.
                 NSError *jsonError;
                 NSDictionary *dicResponse = [NSJSONSerialization
                                               JSONObjectWithData:data
                                               options:0
                                               error:&jsonError];
                 NSLog(@"%@",[dicResponse description]);
             }
             else {
                 NSLog(@"Error code: %ld | Error description: %@", (long)[connectionError code], [connectionError localizedDescription]);
             }
         }];
    }
    else {
        NSLog(@"Error: %@", clientError);
    }
person NSPratik    schedule 08.06.2015