77

iOS 6の新機能を使用SLComposeViewControllerしてFacebook、Twitter、またはSina Weiboに投稿するために実行する必要のある手順は何ですか?

4

3 に答える 3

141

このフレームワークの詳細については、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. https://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html

この例では、SLComposeViewController'sを使用しSLServiceTypeFacebookます。TwitterまたはSinaWeiboを使用する場合は、SLServiceTypeを次のいずれかに変更してください。

  • SLServiceTypeFacebook
  • SLServiceTypeSinaWeibo
  • SLServiceTypeTwitter

iOS 6では、を使用してFacebook、Twitter、またはSinaWeiboに直接投稿するのが非常に簡単になりましたSLComposeViewController。これはiOS5と非常によく似ていTWTweetComposeViewControllerます。

まず、View Controllerのヘッダーファイル(.h)#importで、SocialFrameworkとAccountsFrameworkを使用します。

#import <Social/Social.h>

#import <Accounts/Accounts.h>

ここでは、単純なものを宣言し、UIButton後でIBActionそのボタンにリンクしvoid、選択した共有サービスが利用可能であることを確認するために使用される(sharingStatus)を宣言します。

@interface ViewController : UIViewController

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

@implementation ViewController

次に、実装ファイル(.m)で、ヘッダーファイルで宣言した(sharingStatus)voidを実装することから始めます。sharedStatusは、SLComposeViewControllerisAvailableForServiceTypeBOOLを使用して、引数で指定されたサービスに投稿できるかどうかを返します。この場合、サービスタイプを使用しますSLServiceTypeFacebook。サービスが利用可能な場合、投稿ボタンは1.0fのアルファ値で有効になり、サービスが利用できない場合、ボタンは無効になり、アルファ値は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利用できないサービスタイプについてコンポーザーを呼び出さないように再度確認します。(最後のチェック中に問題が発生した場合、または投稿ボタンをタップしてから作曲家all / initの間に何とかして可用性が変化した場合。以下のコードは、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];
    }
}

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

そして最後に、interface Builderを開きUIButton、投稿ボタンとなるを追加します。次に、接続インスペクターで、前に作成したボタンにリンクします。これで完了ですIBOutletIBAction完了です。

ここに画像の説明を入力してください

于 2012-09-19T21:37:28.273 に答える
25

このコードを使用して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を変更してください。

于 2013-02-15T09:06:39.637 に答える
13

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];
        }];
    }
于 2013-06-20T06:28:39.687 に答える