有关此框架的详细信息,请参阅 Apple 的社交框架类参考
附加教程:
- http://soulwithmobiletechnology.blogspot.com/2012/07/tutorial-how-to-use-inbuilt.html
- http://www.mobile.safilsunny.com/iphone/integrating-facebook-ios/
- https://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html
对于这个例子,我们将使用SLComposeViewController
's SLServiceTypeFacebook
。如果您想使用 Twitter 或 SinaWeibo,只需将 SLServiceType 更改为以下之一:
- SL服务类型Facebook
- SL服务类型新浪微博
- SL服务类型Twitter
iOS 6 使得使用以下方式直接发布到 Facebook、Twitter 或新浪微博变得非常容易SLComposeViewController
。这与 iOS 5 的工作原理非常相似TWTweetComposeViewController
.
首先,在视图控制器的头文件(.h)中#import
社会框架和账户框架。
#import <Social/Social.h>
#import <Accounts/Accounts.h>
这里我们将声明一个简单的UIButton
and an IBAction
我们稍后将链接到该按钮和void
(sharingStatus) 将用于检查所选共享服务是否可用。
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *easyFacebookButton;
- (IBAction)facebookPost:(id)sender;
- (void)sharingStatus;
@end
@implementation ViewController
然后,在您的实现文件 (.m) 中,我们将首先实现我们在头文件中声明的 (sharingStatus) void。共享状态用途SLComposeViewController
's isAvailableForServiceType
BOOL 返回您是否可以发布到其参数中指定的服务。在这种情况下,我们将使用服务类型SLServiceTypeFacebook
。如果服务可用,则发布按钮将启用,alpha 值为 1.0f;如果服务不可用,则按钮将被禁用,其 alpha 值设置为 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;
}
}
在这里我们将设置IBAction
这将调用作曲家。为了获得良好的实践,我们将检查isAvailableForServiceType
再次避免为不可用的服务类型调用 Composer。 (如果在上次检查期间出现问题,或者在点击发布按钮和作曲家全部/初始化之间的几分之一秒内可用性发生某种变化。下面的代码已设置为显示带有文本的 Facebook 作曲家表,一个图像和一个链接。此操作还使用完成处理程序来处理作曲家的取消和完成结果。
- (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];
}
}
In 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
这将是发布按钮。然后在连接检查器中链接IBOutlet
and IBAction
我们之前创建了该按钮,就是这样!你完成了!