1. ホーム
  2. ios

SLComposeViewController共有のためのチュートリアル【終了しました

2023-10-04 12:37:38

質問

iOS 6 の新機能である SLComposeViewController を使用して、Facebook、Twitter、または Sina Weibo に投稿するには、どのような手順が必要ですか?

どのように解決するのですか?

このフレームワークの詳細については、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、Sina Weibo に直接投稿するのが非常に簡単になりました。 SLComposeViewController . この機能は、iOS 5 の TWTweetComposeViewController .

まず、ビューコントローラのヘッダファイル (.h) で #import に、ソーシャルフレームワークとアカウントフレームワークを追加します。

#import <Social/Social.h>

#import <Accounts/Accounts.h>

ここでは、単純な UIButtonIBAction で、後でそのボタンにリンクすることになります。 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 's isAvailableForServiceType BOOLで、引数で指定されたサービスに投稿できるかどうかを返します。今回は、サービスタイプの 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 を再度確認し、利用できないサービスタイプで作曲家を呼び出さないようにします。(前回のチェックで何か問題が発生した場合や、投稿ボタンを押してからコンポーザーが起動するまでのわずかな時間に、利用可能なサービスが変更された場合などに備えてです。以下のコードは、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];
}

そして最後に、インターフェイス・ビルダーを開いて UIButton を追加します。そして、接続インスペクタで IBOutletIBAction をボタンに追加すれば完了です。これで完成です!