¿Cuáles son los pasos que debo seguir para usar el nuevo SLComposeViewController
de iOS 6 para publicar en Facebook, Twitter o Sina Weibo?Tutorial para compartir SLComposeViewController
Respuesta
Para más detalles sobre este marco consulte Social Framework Class Reference
tutoriales adicionales de Apple:
- http://soulwithmobiletechnology.blogspot.com/2012/07/tutorial-how-to-use-inbuilt.html
- http://www.mobile.safilsunny.com/iphone/integrating-facebook-ios/
- http://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html
- https://developer.apple.com/videos/wwdc/2012/?id=306
Para este ejemplo, usaremos SLComposeViewController
's SLServiceTypeFacebook
. Si desea utilizar Twitter o SinaWeibo acaba de cambiar el SLServiceType a uno de los siguientes:
- SLServiceTypeFacebook
- SLServiceTypeSinaWeibo
- SLServiceTypeTwitter
iOS 6 ha hecho que sea muy fácil de enviar directamente a Facebook, Twitter o Sina Weibo usando el SLComposeViewController
. Esto funciona de manera muy similar a iOS 5 TWTweetComposeViewController
.
Primero, 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í vamos a declarar una sencilla UIButton
y un IBAction
que veremos más adelante enlace a ese botón y un (sharingStatus) void
que se utiliza para comprobar que el servicio para compartir seleccionada es disponible.
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *easyFacebookButton;
- (IBAction)facebookPost:(id)sender;
- (void)sharingStatus;
@end
@implementation ViewController
A continuación, en el archivo de aplicación (.m), vamos a empezar por la aplicación del vacío (sharingStatus) que declara en el archivo de cabecera. sharingStatus usa SLComposeViewController
's isAvailableForServiceType
BOOL para devolver si puede o no publicar en el servicio especificado en su argumento. En este caso, utilizaremos 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í vamos a configurar el IBAction
que llamar al compositor. Como buena práctica, revisaremos 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://stackoverflow.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
nos registraremos un observador a ACAccountStoreDidChangeNotification
lo que la aplicación puede ser notificado cuando cuenta los cambios de información. 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, por último, se abren constructor de interfaces y añadir un UIButton
que será el botón de entrada. Luego, en el inspector de conexiones, vincule el IBOutlet
y el IBAction
que creamos anteriormente con el botón, ¡y listo! ¡Terminaste!
sólo tiene que utilizar 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 desea esto para Twitter, simplemente cambie SLServiceTypeTwitter.
Estoy recibiendo un problema de la página de configuración con su código. – sabir
@sabir No te conseguí. ¿Puedes explicarlo por favor? –
cuando la cuenta de Facebook está vacía en su dispositivo, muestra la alerta con la configuración y el botón cancelar cuando hago clic en el botón de configuración, debería ir a la página de configuración, funciona bien hasta IOS 6.01 pero en IOS 7 el botón de configuración no me lleva a configuración página.so tiene alguna idea sobre esto – sabir
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];
}];
}
- 1. Cómo crear botones personalizados para compartir
- 2. ¿Buen tutorial para SlickGrid?
- 3. Jni Tutorial para Android
- 4. Tutorial para libsvm C++
- 5. Principiante tutorial para Elgg
- 6. Tutorial para ServiceMix 4.2
- 7. Tutorial para ClojureBox
- 8. ¿Un tutorial para libjingle?
- 9. Snap tutorial y consejo
- 10. iOS6 - Marco social: ¿cómo se sustituye SLComposeViewController a TWTweetComposeViewController para iOS5?
- 11. Software/plataforma para compartir especificaciones
- 12. Emacs tutorial para proyectos grandes
- 13. Tutorial de Lucene para principiantes
- 14. tutorial para escribir complementos tinymce?
- 15. ¿Algún tutorial para desarrollar chatbots?
- 16. C# tutorial para escribir gadgets
- 17. 101 tutorial para configurar nhibernate?
- 18. Tutorial para Spinning Wheel Android?
- 19. Tutorial/recurso para implementar VM
- 20. Tutorial de RAII para C++
- 21. Necesito un tutorial para DotNetOpenAuth
- 22. IIS 7: Tutorial para principiantes
- 23. Tutorial para principiantes para Arduino Mega ADK
- 24. compartir ubicación con intención de compartir Actividad
- 25. Aplicación simple para compartir pantalla C#
- 26. Estrategia para compartir recursos de OpenGL
- 27. MSHTML tutorial
- 28. UIImagePickerController tutorial?
- 29. ¿Algún tutorial de proyecto symfony2 para principiantes?
- 30. Tutorial para Spring Web Flow usando Eclipse
Hola, Fue una respuesta agradable, aunque tengo pequeña duda, puede también presentes interfaz de inicio de sesión en/cuenta de Facebook twitter caso del usuario no está configurado ¿arriba? –
@AbhinandanSahgal no, no con esta clase. Sin embargo, cuando funciona correctamente, el compositor detectará si el usuario no ha iniciado sesión y presentará una alerta para llevarlos a la configuración del servicio apropiado para iniciar sesión en su cuenta. –
¿Puedes poner una muestra para llevarlos a la configuración? –