SLComposeViewController共享教程

使用iOS 6的新SLComposeViewController发布到Facebook,Twitter或新浪微博,需要遵循哪些步骤?

有关此框架的详细信息,请参阅Apple的社交框架类参考

其他教程:

  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

对于这个例子,我们将使用SLComposeViewControllerSLServiceTypeFacebook 。 如果您想使用Twitter或SinaWeibo,只需将SLServiceType更改为以下之一:

  • SLServiceTypeFacebook
  • SLServiceTypeSinaWeibo
  • SLServiceTypeTwitter

iOS 6使用SLComposeViewController直接发布到Facebook,Twitter或新浪微博非常简单。 这与iOS 5的TWTweetComposeViewController非常类似。

首先,在你的视图控制器的头文件(.h) #import社会框架和帐户框架。

#import <Social/Social.h>

#import <Accounts/Accounts.h>

在这里,我们将声明一个简单的UIButton和一个IBAction ,我们稍后将链接到该button,并将使用一个void (sharingStatus)来检查选定的共享服务是否可用。

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

然后,在您的实现文件(.m)中,我们将首先实现我们在头文件中声明的(sharingStatus)void。 sharingStatus使用SLComposeViewControllerisAvailableForServiceType BOOL返回是否可以发布到其参数中指定的服务。 在这种情况下,我们将使用服务typesSLServiceTypeFacebook 。 如果该服务可用,则后置button将被启用,并具有1.0f的阿尔法值,并且如果该服务不可用,该button将被禁用其α值被设置为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; } } 

在这里,我们将设置将调用composer php的IBAction 。 为了好的做法,我们将再次检查isAvailableForServiceType ,以避免调用isAvailableForServiceType来获取不可用的服务types。 (在最后一次检查过程中发生了错误,或者在点击发布button和作曲者all / init之间以某种方式改变了可用性的情况下面的代码已经被设置为显示具有文本的Facebookcomposer php表格,一个图像和一个链接,这个动作也为composer php取消和完成的结果使用了一个完成处理程序。

 - (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]; } } 

viewWillAppear我们将向ACAccountStoreDidChangeNotification注册一个观察者,以便在帐户信息更改时通知应用程序。 这个观察者将在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]; } 

最后,打开界面生成器并添加一个UIButton ,它将成为后期button。 然后在连接检查器中将我们之前创build的IBOutletIBAction链接到button,就是这样! 你完成了!

在这里输入图像描述

只需使用此代码在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]; 

如果你想要这个Twitter的只是改变SLServiceTypeTwitter。

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]; }]; }