¿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. ¿Buen tutorial para SlickGrid?
- 2. Tutorial para libsvm C++
- 3. Tutorial para ServiceMix 4.2
- 4. Tutorial para ClojureBox
- 5. ¿Un tutorial para libjingle?
- 6. Principiante tutorial para Elgg
- 7. Jni Tutorial para Android
- 8. Cómo crear botones personalizados para compartir
- 9. Android compartir intento para Facebook- compartir texto Y el enlace
- 10. Snap tutorial y consejo
- 11. Tutorial para Spinning Wheel Android?
- 12. Necesito un tutorial para DotNetOpenAuth
- 13. IIS 7: Tutorial para principiantes
- 14. ¿Conoces algún tutorial para MBUnit?
- 15. Emacs tutorial para proyectos grandes
- 16. C# tutorial para escribir gadgets
- 17. 101 tutorial para configurar nhibernate?
- 18. Tutorial de Lucene para principiantes
- 19. tutorial para escribir complementos tinymce?
- 20. Tutorial/recurso para implementar VM
- 21. Tutorial de RAII para C++
- 22. ¿Algún tutorial para desarrollar chatbots?
- 23. Software/plataforma para compartir especificaciones
- 24. iOS6 - Marco social: ¿cómo se sustituye SLComposeViewController a TWTweetComposeViewController para iOS5?
- 25. Tutorial para principiantes para Arduino Mega ADK
- 26. compartir ubicación con intención de compartir Actividad
- 27. Facebook SLComposeViewController La URL aparece en el cuerpo si la URL y la imagen están presentes
- 28. MSHTML tutorial
- 29. UIImagePickerController tutorial?
- 30. Opciones para generar Xcode, etc Tutorial
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? –