スマートフォン推進室の渡辺です。
iOS5でTwitterがOSの機能の一部として組み込まれ、アプリケーションから簡単にTwitterにシェアできるようになったのは記憶に新しいと思います。
そしてiOS6ではFacebookもOSの機能の一部として組み込まれました。
それに伴ってSocial Frameworkと呼ばれるframeworkが追加され、TwitterとFacebookはこのframeworkで簡単にシェアできるようになっています。
補足:未確認ですが、中国でTwitterみたいなサービスである「Sina Weibo」もSocial Frameworkから同様に扱えるようです。
今回はこのSocial Frameworkを使って、TwitterとFacebookへのシェアの仕方を簡単にご紹介します。
iOS6専用アプリとして出すにはまだ少し早いので、iOS5を考慮しつつSocial Frameworkを使っていきましょう。
Link Binary With LibrariesにSocial.frameworkを登録します。
iOS5でも動くようにするためRequiredとなっている部分をOptionalに変更しておきます。

これで準備ができたのでコードを書いていきます。
今回は投稿だけなので、Social FrameworkにあるSLComposeViewControllerクラスだけ使用します。
使い方は非常に簡単です。
+ (SLComposeViewController *)composeViewControllerForServiceType:(NSString *)serviceType
でインスタンスを取得します。
serviceTypeには現段階で「SLServiceTypeTwitter」「SLServiceTypeFacebook」「SLServiceTypeSinaWeibo」の3種類が用意されています。
インスタンスを作ったら、あとは画像を追加(addImage:)、初期テキストの指定(setInitialText:)、参照URLの追加(addURL:)を行います。
「送信した」もしくは「キャンセルした」のかを判断する場合には、completionHandlerを設定しましょう。
勘の良い方であれば気がついたと思いますが、Twitter FrameworkにあるTWTweetComposeViewControllerと同じなのです。
初期値を設定したらあとはSLComposeViewControllerを表示するだけです。
手っ取り早いのはModalで表示するパターンでしょう。
あとはframeworkが処理してくれます。
あぁなんて簡単、便利!
iOS5ではSocial Frameworkが使えないので、TwitterはTwitter Frameworkで、FacebookはFacebookのiOS用SDKを使う必要があります。
判定は下記のような感じでよいでしょう。
if(NSClassFromString(@"SLComposeViewController")) {
// Social Frameworkが使える
}
else {
// いままで通りの方法 (iOS5)
}
是非Social.frameworkを使ってアプリをより良くしてみてください。
上記サンプルを作成しましたのでご自由にどうぞ。
SocialFrameworkSample