[`Twitter.framework`]ツイッターつぶやき機能を実装するためのメモ

Twitterのつぶやき機能を実装したいなぁということで調たことなどのメモ

iOS 5 では Twitter.framework が使える

Twitter.frameworkOptional でプロジェクトに追加する。

iOS部分の分岐コードは以下のように簡単にできる。

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0) {  
  // iOS5以上の処理
  // Twitter.framework を使えば楽チン
} else {
  // iOS4以下の処理
  // 実装が面倒くさいなら UIWebView か Safariに送れば OK
}

Twitter.framework で ツイートするためのビューを表示する

そういうことで以下のようなメソッドを書いた。

- (void)showTweetViewWithInitialText:(const char *)text
                             urlText:(const char *)urlText
                parentViewController:(UIViewController *)parentVC
                            animated:(BOOL)animated {
  // TWTweetComposeViewController を作る
  TWTweetComposeViewController *twVC;
  twVC = [[[TWTweetComposeViewController alloc] init] autorelease];

  // 初期状態で入力されている文字列をセットする
  if ( text != 0 ) {
    NSString *textString = [NSString stringWithCString:text encoding:NSUTF8StringEncoding];
    // ツイッターは最大140字まで
    if ( textString.length > 140 ) textString = [textString substringWithRange:NSMakeRange(0, 140)];
    [twVC setInitialText:textString];
  }  
  // URL のセット
  if ( urlText != 0 ) {
    NSURL *url = [NSURL URLWithString:[NSString stringWithCString:urlText encoding:NSUTF8StringEncoding]];
    if ( url ) [twVC addURL:url];
  }
  // ハンドラを作成してビューコントローラーにセットする
  // ハンドラの呼び出しは非同期実行なので
  // いつ呼び出されても問題ないように処理内容を定義する
  TWTweetComposeViewControllerCompletionHandler handler;
  handler = ^(TWTweetComposeViewControllerResult result) {
    switch (result) {
      case TWTweetComposeViewControllerResultDone:
      /* ここはツイートを送信すると実行される */
      // なにか処理内容を書く
        break;

      case TWTweetComposeViewControllerResultCancelled:
      /* ここはツイートをキャンセルした場合(あるいは非ログイン状態でこのメソッドをコールした時)に呼ばれる */
      // なにか処理内容を書く
        break;

      default:
        NSAssert(NO, @"%@ : 不正な列挙子", NSStringFromSelector(_cmd));
        break;
    }
  };
  twVC.completionHandler = handler;

  [parentVC presentModalViewController:twVC animated:animated];
}

※引数に const char * を使ってるのは cocos2d-x で使用する都合のため。 ※URL は複数セットできるのだけれど1つしかセットできるようにしていない。

Twitter の URL のパラメータは

http://twitter.com/intent/tweet?text=テキスト&url=http%3a%2f%2ffernweh.jp%2f&via=fernweh8000

こんな感じ。URLエンコードしないとダメだよ。UIWebView などを使う場合はこれだけ知ってれば十分かな。さて次は UIWebView の使い方を覚えねば。。

Share