ios ios6 slcomposeviewcontroller social-framework

ios - Tutorial para compartir SLComposeViewController



ios6 social-framework (3)

Uso seguro de SLComposeViewController

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { SLComposeViewController *fbPost = [SLComposeViewController composeViewControllerForServiceType: SLServiceTypeFacebook]; [fbPost setInitialText:@"Text You want to Share"]; [fbPost addImage:[UIImage imageNamed:@"shareImage.png"]]; [self presentViewController:fbPost animated:YES completion:nil]; [fbPost setCompletionHandler:^(SLComposeViewControllerResult result) { switch (result) { case SLComposeViewControllerResultCancelled: NSLog(@"Post Canceled"); break; case SLComposeViewControllerResultDone: NSLog(@"Post Sucessful"); break; default: break; } [self dismissViewControllerAnimated:YES completion:nil]; }]; }

¿Cuáles son los pasos que debo seguir para usar el nuevo SLComposeViewController iOS 6 para publicar en Facebook, Twitter o Sina Weibo?


Para obtener detalles sobre este marco, consulte la referencia de clase del Marco Social de Apple .

Tutoriales adicionales:

  1. http://soulwithmobiletechnology.blogspot.com/2012/07/tutorial-how-to-use-inbuilt.html
  2. http://www.mobile.safilsunny.com/iphone/integrating-facebook-ios/
  3. http://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html
  4. https://developer.apple.com/videos/wwdc/2012/?id=306

Para este ejemplo, SLComposeViewController el SLComposeViewController de SLServiceTypeFacebook . Si desea utilizar Twitter o SinaWeibo, simplemente cambie SLServiceType por uno de los siguientes:

  • SLServiceTypeFacebook
  • SLServiceTypeSinaWeibo
  • SLServiceTypeTwitter

iOS 6 ha hecho que sea muy fácil publicar directamente en Facebook, Twitter o Sina Weibo utilizando SLComposeViewController . Esto funciona de manera muy similar al TWTweetComposeViewController iOS 5.

En primer lugar, en su vista, el archivo de encabezado del controlador (.h) #import el Marco social y el Marco de cuentas.

#import <Social/Social.h>

#import <Accounts/Accounts.h>

Aquí declararemos un UIButton simple y un IBAction que luego vincularemos a ese botón y un void (sharingStatus) que se usará para verificar que el servicio de intercambio seleccionado esté disponible.

@interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIButton *easyFacebookButton; - (IBAction)facebookPost:(id)sender; - (void)sharingStatus; @end @implementation ViewController

Luego, en su archivo de implementación (.m), comenzaremos por implementar el (sharedStatus) void que declaramos en el archivo de encabezado. sharingStatus usa SLComposeViewController isAvailableForServiceType BOOL para devolver si puede o no publicar en el servicio especificado en su argumento. En este caso, usaremos el tipo de servicio SLServiceTypeFacebook . Si el servicio está disponible, el botón de publicación se habilitará con un valor alfa de 1.0f, y si el servicio no está disponible, el botón se desactivará con su valor alfa establecido en 0.5f.

- (void)sharingStatus { if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { NSLog(@"service available"); self.easyFacebookButton.enabled = YES; self.easyFacebookButton.alpha = 1.0f; } else { self.easyFacebookButton.enabled = NO; self.easyFacebookButton.alpha = 0.5f; } }

Aquí configuraremos el IBAction que llamará al compositor. Como buena práctica, isAvailableForServiceType nuevamente para evitar llamar al compositor para un tipo de servicio que no está disponible. (En caso de que algo haya fallado durante el último control, o si la disponibilidad cambió de alguna manera en la fracción de segundo entre presionar el botón de publicar y los compositores all / init. El código siguiente se configuró para mostrar una hoja de compositores de Facebook con texto, una imagen y un enlace. Esta acción también utiliza un controlador de finalización para los resultados cancelados y hechos del compositor.

- (IBAction)facebookPost:(id)sender { if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { SLComposeViewController *mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; [mySLComposerSheet setInitialText:@"iOS 6 Social Framework test!"]; [mySLComposerSheet addImage:[UIImage imageNamed:@"myImage.png"]]; [mySLComposerSheet addURL:[NSURL URLWithString:@"http://.com/questions/12503287/tutorial-for-slcomposeviewcontroller-sharing"]]; [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { switch (result) { case SLComposeViewControllerResultCancelled: NSLog(@"Post Canceled"); break; case SLComposeViewControllerResultDone: NSLog(@"Post Sucessful"); break; default: break; } }]; [self presentViewController:mySLComposerSheet animated:YES completion:nil]; } }

En viewWillAppear , registraremos un observador en ACAccountStoreDidChangeNotification para que la aplicación pueda ser notificada cuando cambie la información de la cuenta. Este observador se eliminará en viewDidDisappear .

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sharingStatus) name:ACAccountStoreDidChangeNotification object:nil]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:ACAccountStoreDidChangeNotification]; }

Y finalmente, abra el constructor de interfaz y agregue un UIButton que será el botón de publicación. Luego, en el inspector de conexiones, vinculamos IBOutlet e IBAction que creamos anteriormente al botón, ¡y eso es todo! ¡Terminaste!


Solo usa este código para compartir en Facebook.

SLComposeViewController *controllerSLC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; [controllerSLC setInitialText:@"First post from my iPhone app"]; [controllerSLC addURL:[NSURL URLWithString:@"http://www.appcoda.com"]]; [controllerSLC addImage:[UIImage imageNamed:@"test.jpg"]]; [self presentViewController:controllerSLC animated:YES completion:Nil];

Si quieres esto para Twitter, simplemente cambia SLServiceTypeTwitter.