2012-11-11 20 views

Odpowiedz

59

W systemie iOS 6 należy użyć numeru Social.framework. Ma to klasę o nazwie SLRequest.

Używa się go prawie tak samo jak przestarzałą wersję TWRequest, ale należy określić, że jest to prośba twittera, a nie prośba na Facebooku.

Cała wersja Twitter.framework stała się przestarzała od wersji iOS 6, ponieważ Apple dodała Facebooka i Weibo (chińską sieć społecznościową) do systemu iOS 6, zgrupowano wszystkie klasy społeczne w nowym Social.framework.

Uwaga należy określić typ usługi dla Twitter/Facebook, przykład:

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

Koniecznie sprawdzeniu documentation.

2

Oto kompletny kod przesłać tekst + zdjęcie na swoim koncie Twitter za pomocą API Twittera

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 !"); 
         } 
        }]; 
      } 
     } 
    }]; 
+1

2015: Use „https://api.twitter.com/1.1/statuses/update.json”, a także zwrócić uwagę, że całkiem możliwe błędy mogą powrócić jako JSON w the responseData. – prewett

0

Inną alternatywą jest użycie API Twittera. Powinieneś mieć na to framework Twittera.

Następnie wykonaj następujący kod:

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); 
    }