甘いものが好きです

iOS App開発時に感じた疑問や課題、その他の雑感などを書いていきます。

Twitter Frameworkでツイート機能の実装が容易になった

ツイート機能の実装が容易になった

iOS5でiOS SDKに追加されたTwitter Frameworkを使うと、Twitter APIを利用するiOS Appを簡単に作成することができる。従来はTwitter社にxAuth利用申請を行うなどの事前準備が必要だったが、このTwitter Frameworkを使用すると、そのような準備は必要ない。

2つの実装方法

Twitter FrameworkによるTwitter APIの利用方法は以下の2つに分類される。

  1. TWTweetComposeViewControllerクラスによるツイート編集・投稿機能の実現。
  2. TWRequestクラスによる各種APIの実行。

今回は前者について整理する。

TWTweetComposeViewControllerの大まかな利用方法

TWTweetComposeViewControllerは、MessageUI FrameworkにおけるMFMailComposeViewControllerに近いので、この2つを対比するとTWTweetComposeViewControllerの利用方法を把握しやすいだろう。どちらもメッセージを編集する画面を管理するクラスで、編集画面を表示する前に各種設定を行うことができる。TWTweetComposeViewControllerの使用例については次の記事が詳しい。
Beginning Twitter in iOS 5 Tutorial - Ray Wenderlich

まずはTWTweetComposeViewControllerのクラスメソッドcanSendTweetで、ツイートが送信可能かどうかを確認する。これは、MFMailComposeViewControllerがクラスメソッドcanSendMailで事前にメール送信可能かをチェックする点に類似している。

if ([TWTweetComposeViewController canSendTweet]) {
    // ここにツイート機能を実装する。
}

次に、TWTweetComposeViewControllerインスタンスを作成し、ツイートする文章を編集する画面にプリセットするテキストを設定する。

TWTweetComposeViewController *composeViewController = [[TWTweetComposeViewController alloc] init];
[composeViewController setInitialText:@"プリセットされたテキスト"];

ツイートにはURLや画像ファイルを追加することができる。ここで画像を追加し、ツイートを送信した場合には、画像が自動的にアップロードされ、ツイート本文にはpic.twitter.comから始まる画像のURLが挿入される。

[composeViewController addURL:url];
[composeViewController addImage:image];

ツイート編集終了時に行う処理を事前に指定することもできる。setCompletionHandler:にブロックを指定すればよい。

[composeViewController setCompletionHandler:^(TWTweetComposeViewControllerResult result) {
    if (result == TWTweetComposeViewControllerResultDone) {
        // ツイート完了。
    } else {
        // ツイートがキャンセルされた。
    }
}];

最後に、このツイート編集画面を表示する。iOS 5.0現在ではPopoverとして表示することはできないので、Modal Viewなどで表示する。

[self presentModalViewController:composeViewController animated:YES];