[iOS] Fabric 入門 #5 Twitter にツイートを投稿する

2015.02.02

ツイートしてみよう

前回に引き続き、Twitter Kit に触れていきたいと思います。いままでは Twitter からのデータの取得のみでしたが、今回は Twitter にツイートを投稿する処理を実装してみたいと思います。

ツイートの投稿については、容易に投稿できるよう TWTRComposer というクラスが提供されています。このクラスを利用すると、かなり簡単にツイート機能を実装することができます。

TWTRComposer を使ってみる

ということで、早速使ってみましょう。次のような実装になります。

#import "ViewController.h"
#import <TwitterKit/TwitterKit.h>

@interface ViewController ()

@property (weak, nonatomic) TWTRLogInButton *logInButton;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // TWTRLogInButtonの設定
    TWTRLogInButton *logInButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
        if (error) {
            NSLog(@"Error : %@", error);
        } else {
            NSLog(@"UserName : %@", session.userName);
            self.logInButton.hidden = YES;
            [self composeTweet];
        }
    }];
    logInButton.center = self.view.center;
    self.logInButton = logInButton;
    [self.view addSubview:logInButton];
}

- (void)composeTweet
{
    TWTRComposer *composer = [TWTRComposer new];
    [composer setText:@"ダンソン フィーザキー トゥーサフィーサーサ コンサ"];
    [composer setImage:[UIImage imageNamed:@"Sample"]];
    [composer showWithCompletion:^(TWTRComposerResult result) {
        if (result == TWTRComposerResultCancelled) {
            NSLog(@"ユーザーによりキャンセル");
        } else {
            NSLog(@"ツイート完了");
        }
    }];
}

@end

実行すると Compose ダイアログが表示されます。投稿が完了すると、Twitter の鳥の鳴き声が聞こえます。

compose-tweet

Social フレームワークとの違い

と、ここまででお気づきの方も多いと思いますが、標準で利用できる Social フレームワークとよく似ています。以下は Social フレームワークを使った場合の実装です。

- (void)composeTweet
{
    SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
    [controller setInitialText:@"ダンソン フィーザキー トゥーサフィーサーサ コンサ"];
    [controller addImage:[UIImage imageNamed:@"Sample"]];
    [self presentViewController:controller animated:YES completion:nil];
}

で、違いはというと…ありません!投稿されたツイートの情報を見ても、両者による違いは特に見つけられませんでした。

まとめ

Fabric を利用したツイートの投稿は、Social フレームワークを触ったことがある人でも、そうでない人でも、簡単に実装できるということが分かりました。どちらを利用したほうが良いか?については、Facebook の投稿も利用する場合は Social フレームワークを、Twitter しか使う予定がない場合は Fabric を使うとまとまりが出て良いのかなぁ、という感じです。どちらも簡単に実装できるので、どっちでも良いとも思います。

参考