SLComposeViewController共享教程
使用iOS 6的新SLComposeViewController
发布到Facebook,Twitter或新浪微博,需要遵循哪些步骤?
有关此框架的详细信息,请参阅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
对于这个例子,我们将使用SLComposeViewController
的SLServiceTypeFacebook
。 如果您想使用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使用SLComposeViewController
的isAvailableForServiceType
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的IBOutlet
和IBAction
链接到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]; }]; }