2012-11-11 5 views

Antwort

59

Auf iOS 6 sollten Sie die Social.framework verwenden. Dies hat eine Klasse mit dem Namen SLRequest.

Sie verwenden es fast auf die gleiche Weise wie die veraltete TWRequest, aber Sie müssen angeben, dass es eine Twitter-Anfrage im Gegensatz zu einer Facebook-Anfrage ist.

Die gesamte Twitter.framework wurde ab iOS 6 veraltet, da Apple Facebook und Weibo (ein chinesisches soziales Netzwerk) zu iOS 6 hinzugefügt hat, gruppierten sie alle sozialen Klassen in die neue Social.framework.

Hinweis müssen Sie den Diensttyp für Twitter/Facebook, Beispiel angeben:

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

Seien Sie sicher, dass die documentation auszuchecken.

2

ist der komplette Code Text + Bild auf Ihren Twitter Account mit 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 !"); 
         } 
        }]; 
      } 
     } 
    }]; 
+1

2015: Verwenden Sie "https://api.twitter.com/1.1/statuses/update.json" und beachten Sie auch, dass Fehler möglicherweise als JSON kommen zurück in die Antwortdaten. – prewett

0

Eine weitere Alternative ist Twitter-API zu verwenden. Sie sollten Twitter Framework dafür haben.

tun dann folgenden Code:

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