首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SLComposeViewController共享教程

SLComposeViewController共享教程
EN

Stack Overflow用户
提问于 2012-09-20 05:37:28
回答 3查看 87.4K关注 0票数 77

要使用iOS 6的新SLComposeViewController在脸书、推特或新浪微博上发帖,我需要遵循哪些步骤?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-20 05:37:28

有关此框架的详细信息,请参阅苹果的Social Framework Class Reference

其他教程:

  1. http://soulwithmobiletechnology.blogspot.com/2012/07/tutorial-how-to-use-inbuilt.html
  2. http://www.mobile.safilsunny.com/iphone/integrating-facebook-ios/
  3. https://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html

在本例中,我们将使用SLComposeViewControllerSLServiceTypeFacebook。如果你想使用Twitter或SinaWeibo,只需将SLServiceType更改为以下其中之一:

  • SLServiceTypeFacebook
  • SLServiceTypeSinaWeibo
  • SLServiceTypeTwitter

iOS 6使得使用SLComposeViewController直接在脸书、推特或新浪微博上发帖变得非常容易。这与iOS 5的TWTweetComposeViewController非常相似。

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

#import <Social/Social.h>

#import <Accounts/Accounts.h>

在这里,我们将声明一个简单的UIButton和一个稍后将链接到该按钮的IBAction,以及一个用于检查所选共享服务是否可用的void (sharingStatus)。

代码语言:javascript
运行
复制
@interface ViewController : UIViewController

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

@implementation ViewController

然后,在您的实现文件(.m)中,我们将首先实现我们在头文件中声明的(sharingStatus)空。sharingStatus使用SLComposeViewControllerisAvailableForServiceType BOOL返回是否可以发布到它的参数中指定的服务。在这种情况下,我们将使用服务类型SLServiceTypeFacebook。如果服务可用,post按钮将被启用,Alpha值为1.0f,如果服务不可用,按钮将被禁用,其Alpha值设置为0.5f。

代码语言:javascript
运行
复制
- (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。(以防在最后一次检查期间出现错误,或者如果可用性在点击post按钮和作曲家all/init之间的几秒钟内以某种方式发生了变化。下面的代码已设置为显示包含文本、图像和链接的Facebook composers工作表。此操作还使用一个完成处理程序来处理编写器的取消和完成结果。

代码语言:javascript
运行
复制
- (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中删除。

代码语言:javascript
运行
复制
- (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,它将成为post按钮。然后在connections检查器中,将我们之前创建的IBOutletIBAction链接到该按钮,就是这样!你的任务完成了!

票数 141
EN

Stack Overflow用户

发布于 2013-02-15 17:06:40

只需使用此代码在Facebook上分享即可。

代码语言:javascript
运行
复制
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即可。

票数 25
EN

Stack Overflow用户

发布于 2013-06-20 14:28:40

SLComposeViewController的

安全使用

代码语言:javascript
运行
复制
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];
        }];
    }
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12503287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档