2011-11-14 18 views
7

C'è un modo per aggiungere una foto alla timeline di Twitter utilizzando TWRequest o qualcosa del genere ?? Sono molto perso in questo caso.iOS 5 Allega foto a Twitter con API Twitter

Posso postare un aggiornamento di stato utilizzando TWRequest per iOS5 e MGTwitterEngine per la versione precedente di iOS, ma non sono in grado di allegare un UIImage all'aggiornamento.

Grazie in anticipo per qualsiasi aiuto fornito.

risposta

15

ho trovato e utilizzato così tanti grandi risposte su questo sito, Grazie a tutti, pensano che il momento di restituire :) Elaborando risposta di Noè, questo è il codice finale che ha lavorato per me per ottenere un'immagine e il testo su un tweet usando TWRequest ...

  TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"https://upload.twitter.com/1/statuses/update_with_media.json"] parameters:nil requestMethod:TWRequestMethodPOST]; 

      UIImage * image = [UIImage imageNamed:@"myImage.png"]; 

      //add text 
      [postRequest addMultiPartData:[@"I just found the secret level!" dataUsingEncoding:NSUTF8StringEncoding] withName:@"status" type:@"multipart/form-data"]; 
      //add image 
      [postRequest addMultiPartData:UIImagePNGRepresentation(image) withName:@"media" type:@"multipart/form-data"]; 

      // Set the account used to post the tweet. 
      [postRequest setAccount:twitterAccount]; 

      // Perform the request created above and create a handler block to handle the response. 
      [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
       NSString *output = [NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]]; 
       [self performSelectorOnMainThread:@selector(displayText:) withObject:output waitUntilDone:NO]; 
      }]; 

ho trovato utilizzando TWRequest di essere la soluzione migliore per il mio scenario come io non volevo che l'utente sia in grado di modificare il post prima di tweeting (che era il problema con TWTweetComposeViewController)

+0

Questo codice è applicabile solo in ios5? o posso usarlo solo per le versioni inferiori – iPhone

+0

iOS5, ci sono librerie di twitter opensource che possono aiutarti se hai bisogno di una staticfiction

+0

Puoi fare la stessa cosa in iOS 4 con [DETweetComposeViewController] (https://github.com/ doubleencore/DETweetComposeViewController). –

1

Con TWRequest, è possibile utilizzare il metodo -addMultipartData:withName:type: su quella con i dati, ad esempio, il metodo UIImageJPEGRepresentation(), di inviare un tweet tramite il metodo del Twitter API statuses/update_with_media.

Se si utilizza TWTweetComposeViewController, è ancora più semplice: è possibile allegare una o più immagini UIImage al metodo -addImage:.

4

è possibile utilizzare il controller di visualizzazione twitter comporre TWTweetComposeViewController per inviare foto su Twitter senza trattare con twitter oauth e account. vedi http://developer.apple.com/library/ios/#documentation/Twitter/Reference/TWTweetSheetViewControllerClassRef/Reference/Reference.html per maggiori dettagli.

Il problema principale è una nuova funzionalità di iOS 5, quindi gli utenti che non hanno effettuato l'aggiornamento non saranno in grado di usarlo.

TWTweetComposeViewController* tweetView = [[TWTweetComposeViewController alloc] init]; 
[tweetView addImage:yourImage]; 

TWTweetComposeViewControllerCompletionHandler 
     completionHandler = 
    ^(TWTweetComposeViewControllerResult result) { 
     switch (result) 
     { 
      case TWTweetComposeViewControllerResultCancelled: 
       NSLog(@"Twitter Result: canceled"); 
       break; 
      case TWTweetComposeViewControllerResultDone: 
       NSLog(@"Twitter Result: sent"); 
       break; 
      default: 
       NSLog(@"Twitter Result: default"); 
       break; 
     } 
     [self dismissModalViewControllerAnimated:YES]; 
    }; 
[tweetView setCompletionHandler:completionHandler];