2011-11-14 45 views
7

¿Hay alguna manera de agregar una foto a la línea de tiempo de Twitter utilizando TWRequest o algo así? Estoy muy perdido en este caso.iOS 5 Adjuntar foto a Twitter con Twitter API

Puedo publicar una actualización de estado usando TWRequest para iOS5 y MGTwitterEngine para la versión anterior de iOS, pero no puedo adjuntar un UIImage a la actualización.

Gracias de antemano por cualquier ayuda brindada.

Respuesta

15

he encontrado y utilizado tantos grandes respuestas en este sitio, gracias a todos, pensamos que es hora de dar vuelta :) Abundando en la respuesta de Noé, este es el código final que trabajó para mí para obtener una imagen y el texto en 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]; 
      }]; 

encontré usando TWRequest ser mejor solución para mi escenario, ya que no quería que el usuario sea capaz de editar el mensaje antes de twittear (que fue el tema con el uso de TWTweetComposeViewController)

+0

¿Este código es aplicable solo en ios5? o puedo usarlo para versiones inferiores – iPhone

+0

iOS5 solamente, existen bibliotecas de Twitter de código abierto que pueden ayudarlo si necesita una staticfiction

+0

Puede hacer lo mismo en iOS 4 con [DETweetComposeViewController] (https://github.com/ doubleencore/DETweetComposeViewController). –

1

Con TWRequest, puede utilizar el método -addMultipartData:withName:type: en que, con los datos de, por ejemplo, el método UIImageJPEGRepresentation(), para publicar un tweet a través del método de la API de Twitter statuses/update_with_media.

Si está utilizando TWTweetComposeViewController, es incluso más simple: puede adjuntar una o más imágenes de UIImage con el método -addImage:.

4

puede usar el controlador de compose view de twitter TWTweetComposeViewController para publicar fotos en twitter sin tener que lidiar con twitter oauth y cuentas. ver http://developer.apple.com/library/ios/#documentation/Twitter/Reference/TWTweetSheetViewControllerClassRef/Reference/Reference.html para más detalles.

El problema principal es que es una nueva característica de iOS 5, por lo que los usuarios que no actualizaron no podrán usarla.

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]; 
Cuestiones relacionadas