xcode facebook ios6 frameworks posting

xcode - Cómo publicar en Facebook en iOS 6 en Objective-C usando la clase ACAccountStore



ios6 frameworks (5)

Quiero saber cómo publicar un mensaje de estado en Facebook en iOS 6 usando los nuevos marcos en Xcode 4.5. ¡Gracias! :)


¿Y qué debo hacer cuando solo deseo recibir una alerta en caso de que la publicación sea exitosa y nada cuando el usuario canceló la publicación?

Y desafortunadamente, esto no funciona correctamente para Twitter ... Ya no descarta el TweetSheet. Aquí está mi código:

if(NSClassFromString(@"SLComposeViewController") != nil) { mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; //Tell him with what social plattform to use it, e.g. facebook or twitter [mySLComposerSheet setInitialText:[NSString stringWithFormat:story.title,mySLComposerSheet.serviceType]]; //the message you want to post [mySLComposerSheet addURL:[NSURL URLWithString:story.link]]; //for more instance methodes, go here:https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/SLComposeViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40012205 [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { NSString *output; switch (result) { case SLComposeViewControllerResultCancelled: output = NSLocalizedStringFromTable(@"As it seems you didn''t want to post to Twitter", @"ATLocalizable", @""); break; case SLComposeViewControllerResultDone: output = NSLocalizedStringFromTable(@"You successfully posted to Twitter", @"ATLocalizable", @""); break; default: break; } //check if everything worked properly. Give out a message on the state. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Twitter" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }]; [self presentViewController:mySLComposerSheet animated:YES completion:nil];


Ok chicos, así que pellizqué la publicación original, funciona para iOS 6/7. Cambiar ServiceType, Alert Title y Message for Facebook. ¡Disfrutar!

- (IBAction)tweetMessage:(id)sender { if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) //check if Facebook Account is linked { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Unable to Tweet!" message:@"Please login to Twitter in your device settings." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; return; } //self.mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller self.mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [self.mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I found this Thing, check it out at this Place:/n %@ /n", [self someplace]]]; [self.mySLComposerSheet addImage:self.photos.firstObject]; [self presentViewController:self.mySLComposerSheet animated:YES completion:nil]; //} [self.mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { NSString *output; switch (result) { case SLComposeViewControllerResultCancelled: output = @"Action Cancelled"; break; case SLComposeViewControllerResultDone: output = @"Post Successfull"; break; default: break; } //check if everything worked properly. Give out a message on the state. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Twitter" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }]; }


Publicar un mensaje es bastante simple. Es casi como con el Marco de Twitter.

Primero debe importar los marcos: sociales y cuentas

#import <Social/Social.h> #import <Accounts/Accounts.h>

En tu archivo .h:

SLComposeViewController *mySLComposerSheet;

Este código debe incluirse dentro de su acción en su archivo .m:

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) //check if Facebook Account is linked { mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; //Tell him with what social platform to use it, e.g. facebook or twitter [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"Test",mySLComposerSheet.serviceType]]; //the message you want to post [mySLComposerSheet addImage:yourimage]; //an image you could post //for more instance methods, go here: https://developer.apple.com/documentation/social/slcomposeviewcontroller#//apple_ref/doc/uid/TP40012205 [self presentViewController:mySLComposerSheet animated:YES completion:nil]; } [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { NSString *output; switch (result) { case SLComposeViewControllerResultCancelled: output = @"Action Cancelled"; break; case SLComposeViewControllerResultDone: output = @"Post Successful"; break; default: break; } //check if everything worked properly. Give out a message on the state. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }];


Sin embargo, así es como lo uso en mi aplicación. Suave y deja que el controlador haga el trabajo duro.

- (IBAction)postToFacebook:(id)sender { if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { NSLog(@"log output of your choice here"); } // Facebook may not be available but the SLComposeViewController will handle the error for us. self.mySLComposerSheet = [[SLComposeViewController alloc] init]; self.mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; [self.mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I found this Thing, check it out at SomeWhere:/n %@ /n", [self someURLString]]]; [self.mySLComposerSheet addImage:self.photos.firstObject]; //an image you could post [self presentViewController:self.mySLComposerSheet animated:YES completion:nil]; [self.mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { NSString *output; switch (result) { case SLComposeViewControllerResultCancelled: output = @"Action Cancelled"; break; case SLComposeViewControllerResultDone: output = @"Post Successfull"; break; default: break; } if (![output isEqualToString:@"Action Cancelled"]) { // Only alert if the post was a success. Or not! Up to you. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; } }]; }


- (IBAction)btn_facebook:(id)sender { SLComposeViewController *facebookcomposer = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; [facebookcomposer setInitialText:@"This is just a test"]; [facebookcomposer addURL:[NSURL URLWithString:@"http://www.google.com"]]; [facebookcomposer addImage:[UIImage imageNamed:@"images.jpg"]]; [self presentViewController:facebookcomposer animated:YES completion:nil]; [facebookcomposer setCompletionHandler:^(SLComposeViewControllerResult result) { switch (result) { case SLComposeViewControllerResultDone: NSLog(@"done"); break; case SLComposeViewControllerResultCancelled: NSLog(@"cancelled"); break; default: break; } }]; } - (IBAction)btn_twitter:(id)sender { if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { SLComposeViewController *twitter = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [twitter setInitialText:@"this is just a test"]; [twitter addURL:[NSURL URLWithString:@"http://www.google.com"]]; [twitter addImage:[UIImage imageNamed:@"images.jpg"]]; [self presentViewController:twitter animated:YES completion:nil]; } else { NSLog(@"it is not configured"); } }